@webex/contact-center 3.12.0-next.149 → 3.12.0-next.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.sdd/manifest.json +1 -1
  2. package/ai-docs/CONTRACTS.md +1 -0
  3. package/dist/cc.js +4 -4
  4. package/dist/cc.js.map +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/services/config/Util.js +38 -45
  7. package/dist/services/config/Util.js.map +1 -1
  8. package/dist/services/config/constants.js +15 -71
  9. package/dist/services/config/constants.js.map +1 -1
  10. package/dist/services/config/index.js +49 -226
  11. package/dist/services/config/index.js.map +1 -1
  12. package/dist/services/config/types.js +33 -11
  13. package/dist/services/config/types.js.map +1 -1
  14. package/dist/types/cc.d.ts +3 -3
  15. package/dist/types/index.d.ts +16 -8
  16. package/dist/types/services/config/Util.d.ts +4 -8
  17. package/dist/types/services/config/constants.d.ts +15 -71
  18. package/dist/types/services/config/index.d.ts +16 -64
  19. package/dist/types/services/config/types.d.ts +97 -160
  20. package/dist/webex.js +1 -1
  21. package/package.json +1 -1
  22. package/src/cc.ts +4 -4
  23. package/src/index.ts +16 -8
  24. package/src/services/agent/ai-docs/AGENTS.md +1 -1
  25. package/src/services/config/Util.ts +43 -82
  26. package/src/services/config/ai-docs/AGENTS.md +34 -39
  27. package/src/services/config/ai-docs/ARCHITECTURE.md +88 -101
  28. package/src/services/config/ai-docs/config-spec.md +115 -132
  29. package/src/services/config/constants.ts +18 -80
  30. package/src/services/config/index.ts +52 -278
  31. package/src/services/config/types.ts +101 -185
  32. package/test/unit/spec/index.ts +6 -2
  33. package/test/unit/spec/services/config/Util.ts +442 -70
  34. package/test/unit/spec/services/config/index.ts +246 -544
  35. package/typedoc.md +1 -1
  36. package/umd/contact-center.min.js +2 -2
  37. package/umd/contact-center.min.js.map +1 -1
@@ -2,7 +2,7 @@
2
2
  * @packageDocumentation
3
3
  * @module AgentConfigService
4
4
  */
5
- import { DesktopProfileResponse, ListAuxCodesResponse, AgentResponse, TenantData, OrgInfo, OrgSettings, URLMapping, TeamList, DialPlanEntity, Profile, ListTeamsResponse, AuxCode, MultimediaProfileResponse, SiteInfo, OutdialAniEntriesResponse, OutdialAniParams, AIFeatureFlagsResponse } from './types';
5
+ import { ListAuxCodesResponse, OrgDesktopLoginResponse, UserDesktopLoginResponse, TeamList, DialPlanEntity, Profile, ListTeamsResponse, AuxCode, MultimediaProfileResponse, SiteInfo, OutdialAniEntriesResponse, OutdialAniParams } from './types';
6
6
  /**
7
7
  * The AgentConfigService class provides methods to fetch agent configuration data.
8
8
  * @private
@@ -21,25 +21,24 @@ export default class AgentConfigService {
21
21
  */
22
22
  getAgentConfig(orgId: string, agentId: string): Promise<Profile>;
23
23
  /**
24
- * Fetches the agent configuration data for the given orgId and agentId.
24
+ * Fetches the aggregated organization desktop-login configuration for the given orgId.
25
25
  * @ignore
26
- * @param {string} orgId - organization ID for which the agent configuration is to be fetched.
27
- * @param {string} agentId - agent ID for which the configuration is to be fetched.
28
- * @returns {Promise<AgentResponse>} - A promise that resolves to the agent configuration response.
26
+ * @param {string} orgId - organization ID for which the configuration is to be fetched.
27
+ * @returns {Promise<OrgDesktopLoginResponse>} - A promise that resolves to the organization configuration.
29
28
  * @throws {Error} - Throws an error if the API call fails or if the response status is not 200.
30
29
  * @private
31
30
  */
32
- getUserUsingCI(orgId: string, agentId: string): Promise<AgentResponse>;
31
+ getOrgDesktopLoginConfig(orgId: string): Promise<OrgDesktopLoginResponse>;
33
32
  /**
34
- * Fetches the desktop profile data for the given orgId and desktopProfileId.
33
+ * Fetches the aggregated user desktop-login configuration for the given orgId and ciUserId.
35
34
  * @ignore
36
- * @param {string} orgId - organization ID for which the desktop profile is to be fetched.
37
- * @param {string} desktopProfileId - desktop profile ID for which the data is to be fetched.
38
- * @returns {Promise<DesktopProfileResponse>} - A promise that resolves to the desktop profile response.
35
+ * @param {string} orgId - organization ID for which the configuration is to be fetched.
36
+ * @param {string} ciUserId - CI user ID of the agent whose configuration is to be fetched.
37
+ * @returns {Promise<UserDesktopLoginResponse>} - A promise that resolves to the user configuration.
39
38
  * @throws {Error} - Throws an error if the API call fails or if the response status is not 200.
40
39
  * @private
41
40
  */
42
- getDesktopProfileById(orgId: string, desktopProfileId: string): Promise<DesktopProfileResponse>;
41
+ getUserDesktopLoginConfig(orgId: string, ciUserId: string): Promise<UserDesktopLoginResponse>;
43
42
  /**
44
43
  * Fetches the multimedia profile data for the given orgId and multimediaProfileId.
45
44
  * @ignore
@@ -51,30 +50,28 @@ export default class AgentConfigService {
51
50
  */
52
51
  getMultimediaProfileById(orgId: string, multimediaProfileId: string): Promise<MultimediaProfileResponse>;
53
52
  /**
54
- * fetches the list of teams for the given orgId.
53
+ * fetches the list of teams the given user belongs to.
55
54
  * @ignore
56
55
  * @param {string} orgId - organization ID for which the teams are to be fetched.
57
56
  * @param {number} page - the page number to fetch.
58
57
  * @param {number} pageSize - the number of teams to fetch per page.
59
- * @param {string[]} filter - optional filter criteria for the teams.
60
- * @param {string[]} attributes - optional attributes to include in the response.
58
+ * @param {string} userDbId - database ID of the user whose teams are to be fetched.
61
59
  * @returns {Promise<ListTeamsResponse>} - A promise that resolves to the list of teams response.
62
60
  * @throws {Error} - Throws an error if the API call fails or if the response status is not 200.
63
61
  * @private
64
62
  */
65
- getListOfTeams(orgId: string, page: number, pageSize: number, filter: string[]): Promise<ListTeamsResponse>;
63
+ getListOfTeams(orgId: string, page: number, pageSize: number, userDbId: string): Promise<ListTeamsResponse>;
66
64
  /**
67
- * Fetches all teams from all pages for the given orgId
65
+ * Fetches all teams the given user belongs to, from all pages
68
66
  * @ignore
69
67
  * @param {string} orgId - organization ID for which the teams are to be fetched.
70
68
  * @param {number} pageSize - the number of teams to fetch per page.
71
- * @param {string[]} filter - optional filter criteria for the teams.
72
- * @param {string[]} attributes - optional attributes to include in the response.
69
+ * @param {string} userDbId - database ID of the user whose teams are to be fetched.
73
70
  * @returns {Promise<TeamList[]>} - A promise that resolves to the list of teams.
74
71
  * @throws {Error} - Throws an error if the API call fails or if the response status is not 200.
75
72
  * @private
76
73
  */
77
- getAllTeams(orgId: string, pageSize: number, filter: string[]): Promise<TeamList[]>;
74
+ getAllTeams(orgId: string, pageSize: number, userDbId: string): Promise<TeamList[]>;
78
75
  /**
79
76
  * fetches the list of aux codes for the given orgId.
80
77
  * @ignore
@@ -110,51 +107,6 @@ export default class AgentConfigService {
110
107
  * @private
111
108
  */
112
109
  getSiteInfo(orgId: string, siteId: string): Promise<SiteInfo>;
113
- /**
114
- * Fetches the organization info for the given orgId.
115
- * @ignore
116
- * @param {string} orgId - organization ID for which the organization info is to be fetched.
117
- * @returns {Promise<OrgInfo>} - A promise that resolves to the organization info response.
118
- * @throws {Error} - Throws an error if the API call fails or if the response status is not 200.
119
- * @private
120
- */
121
- getOrgInfo(orgId: string): Promise<OrgInfo>;
122
- /**
123
- * Fetches the organization settings for the given orgId.
124
- * @ignore
125
- * @param {string} orgId - organization ID for which the organization settings are to be fetched.
126
- * @returns {Promise<OrgSettings>} - A promise that resolves to the organization settings response.
127
- * @throws {Error} - Throws an error if the API call fails or if the response status is not 200.
128
- * @private
129
- */
130
- getOrganizationSetting(orgId: string): Promise<OrgSettings>;
131
- /**
132
- * Fetches the tenant data for the given orgId.
133
- * @ignore
134
- * @param {string} orgId - organization ID for which the tenant data is to be fetched.
135
- * @returns {Promise<TenantData>} - A promise that resolves to the tenant data response.
136
- * @throws {Error} - Throws an error if the API call fails or if the response status is not 200.
137
- * @private
138
- */
139
- getTenantData(orgId: string): Promise<TenantData>;
140
- /**
141
- * Fetches the URL mapping data for the given orgId.
142
- * @ignore
143
- * @param {string} orgId - organization ID for which the URL mapping is to be fetched.
144
- * @returns {Promise<URLMapping[]>} - A promise that resolves to the URL mapping response.
145
- * @throws {Error} - Throws an error if the API call fails or if the response status is not 200.
146
- * @private
147
- */
148
- getURLMapping(orgId: string): Promise<URLMapping[]>;
149
- /**
150
- * Fetches AI feature resources for the organization.
151
- * @ignore
152
- * @param {string} orgId - organization ID for which AI feature resources are to be fetched.
153
- * @returns {Promise<AIFeatureFlagsResponse>} - AI feature resources response.
154
- * @throws {Error} - Throws an error if the API call fails or if the response status is not 200.
155
- * @private
156
- */
157
- getAIFeatureFlags(orgId: string): Promise<AIFeatureFlagsResponse>;
158
110
  /**
159
111
  * Fetches the dial plan data for the given orgId.
160
112
  * @ignore
@@ -403,7 +403,7 @@ export type WebSocketEvent = {
403
403
  data: WelcomeEvent | Agent.StationLoginSuccess | Agent.LogoutSuccess | Agent.ReloginSuccess | Agent.StateChangeSuccess | Agent.BuddyAgentsSuccess;
404
404
  };
405
405
  /**
406
- * Represents the response from getUserUsingCI method.
406
+ * Agent identity carried by the `user` section of the user desktop-login aggregate.
407
407
  */
408
408
  export type AgentResponse = {
409
409
  /**
@@ -430,14 +430,6 @@ export type AgentResponse = {
430
430
  * The email address of the agent.
431
431
  */
432
432
  email: string;
433
- /**
434
- * Team IDs assigned to the agent.
435
- */
436
- teamIds: string[];
437
- /**
438
- * Multimedia profile ID associated with the agent.
439
- */
440
- multimediaProfileId: string;
441
433
  /**
442
434
  * Skill profile ID of the agent.
443
435
  */
@@ -447,9 +439,10 @@ export type AgentResponse = {
447
439
  */
448
440
  siteId: string;
449
441
  /**
450
- * Database ID of the agent.
442
+ * Database ID of the agent, distinct from `ciUserId`. Passed as `userDbId` to the team lookup,
443
+ * which sends it as the backend's `filter=userId==` value.
451
444
  */
452
- dbId?: string;
445
+ dbId: string;
453
446
  /**
454
447
  * The default dialed number of the agent.
455
448
  * Note: The API returns this field as "deafultDialledNumber" (with typo).
@@ -457,31 +450,12 @@ export type AgentResponse = {
457
450
  deafultDialledNumber?: string;
458
451
  };
459
452
  /**
460
- * Represents the response from getDesktopProfileById method.
453
+ * Desktop Profile settings carried by the `agentProfile` section of the user desktop-login
454
+ * aggregate.
461
455
  */
462
- export type DesktopProfileResponse = {
463
- /**
464
- * Unique identifier of the agent profile configuration.
465
- */
466
- id: string;
467
- /**
468
- * Display name for the agent profile.
469
- */
470
- name: string;
456
+ export type AgentProfile = {
471
457
  /**
472
- * Description of the agent profile.
473
- */
474
- description: string;
475
- /**
476
- * Parent entity type for the profile (for example ORGANIZATION).
477
- */
478
- parentType: string;
479
- /**
480
- * Indicates whether screen pop is enabled.
481
- */
482
- screenPopup: boolean;
483
- /**
484
- * Represents the voice options of an agent.
458
+ * Represents the voice options of an agent. The order is nondeterministic; treat as a set.
485
459
  */
486
460
  loginVoiceOptions: LoginOption[];
487
461
  /**
@@ -492,14 +466,6 @@ export type DesktopProfileResponse = {
492
466
  * Idle codes that the agents can select in Agent Desktop. It can take one of these values: ALL - To make all idle codes available. SPECIFIC - To make specific codes available.
493
467
  */
494
468
  accessIdleCode: string;
495
- /**
496
- * Wrap-up codes list that the agents can select when they wrap up a contact.
497
- */
498
- wrapUpCodes: string[];
499
- /**
500
- * Idle codes list that the agents can select in Agent Desktop.
501
- */
502
- idleCodes: string[];
503
469
  /**
504
470
  * Dial plan enabled for the agent.
505
471
  */
@@ -515,11 +481,7 @@ export type DesktopProfileResponse = {
515
481
  /**
516
482
  * Whether the agent personal greeting is enabled.
517
483
  */
518
- agentPersonalGreeting: boolean;
519
- /**
520
- * Auto answer allowed.
521
- */
522
- autoAnswer: boolean;
484
+ agentPersonalGreeting?: boolean;
523
485
  /**
524
486
  * Auto wrap-up after seconds.
525
487
  */
@@ -536,26 +498,14 @@ export type DesktopProfileResponse = {
536
498
  * Access control for queues assigned to the agent (ALL, SPECIFIC, or NONE).
537
499
  */
538
500
  accessQueue: CollaborationAccess;
539
- /**
540
- * Queue identifiers available to the agent when access is SPECIFIC.
541
- */
542
- queues: string[];
543
501
  /**
544
502
  * Access control for entry points assigned to the agent.
545
503
  */
546
504
  accessEntryPoint: CollaborationAccess;
547
- /**
548
- * Entry point identifiers available to the agent when access is SPECIFIC.
549
- */
550
- entryPoints: string[];
551
505
  /**
552
506
  * Access control for buddy teams assigned to the agent.
553
507
  */
554
508
  accessBuddyTeam: CollaborationAccess;
555
- /**
556
- * Buddy team identifiers available to the agent when access is SPECIFIC.
557
- */
558
- buddyTeams: string[];
559
509
  /**
560
510
  * Outdial enabled for the agent.
561
511
  */
@@ -568,6 +518,10 @@ export type DesktopProfileResponse = {
568
518
  * Outdial ANI ID of the agent.
569
519
  */
570
520
  outdialANIId: string;
521
+ /**
522
+ * Whether the agent can schedule and manage callbacks.
523
+ */
524
+ scheduleAndManageCallBack?: boolean;
571
525
  /**
572
526
  * Consult to queue allowed.
573
527
  */
@@ -575,31 +529,18 @@ export type DesktopProfileResponse = {
575
529
  /**
576
530
  * Address book ID of the agent.
577
531
  */
578
- addressBookId: string;
532
+ addressBookId?: string;
579
533
  /**
580
534
  * Viewable statistics of the agent.
581
535
  */
582
536
  viewableStatistics: {
583
- id: string;
584
537
  agentStats: boolean;
585
- accessQueueStats: string;
586
- contactServiceQueues: string[];
587
- loggedInTeamStats: boolean;
588
- accessTeamStats: string;
589
- teams: string[];
538
+ aiAgentPerformance?: boolean;
590
539
  };
591
540
  /**
592
541
  * Agent DN validation of the agent.
593
542
  */
594
543
  agentDNValidation: string;
595
- /**
596
- * Additional DN validation criteria configured for the agent.
597
- */
598
- agentDNValidationCriterions: string[];
599
- /**
600
- * Dial plans of the agent.
601
- */
602
- dialPlans: string[];
603
544
  /**
604
545
  * Timeout desktop inactivity custom enabled.
605
546
  */
@@ -607,43 +548,7 @@ export type DesktopProfileResponse = {
607
548
  /**
608
549
  * Timeout desktop inactivity minutes.
609
550
  */
610
- timeoutDesktopInactivityMins: number;
611
- /**
612
- * Show user details in Microsoft enabled or not.
613
- */
614
- showUserDetailsMS: boolean;
615
- /**
616
- * State synchronization in Microsoft enabled or not.
617
- */
618
- stateSynchronizationMS: boolean;
619
- /**
620
- * Show user details in Webex enabled or not.
621
- */
622
- showUserDetailsWebex: boolean;
623
- /**
624
- * State synchronization in Webex enabled or not.
625
- */
626
- stateSynchronizationWebex: boolean;
627
- /**
628
- * Threshold rules configured for the agent profile.
629
- */
630
- thresholdRules: Array<Record<string, string | number>>;
631
- /**
632
- * Whether the agent profile is currently active.
633
- */
634
- active: boolean;
635
- /**
636
- * Whether this profile is the system default.
637
- */
638
- systemDefault: boolean;
639
- /**
640
- * Timestamp when the profile was created.
641
- */
642
- createdTime: number;
643
- /**
644
- * Timestamp when the profile was last updated.
645
- */
646
- lastUpdatedTime: number;
551
+ timeoutDesktopInactivityMins?: number;
647
552
  };
648
553
  /**
649
554
  * Response containing multimedia profile configuration for an agent
@@ -790,7 +695,8 @@ export type ListTeamsResponse = {
790
695
  };
791
696
  };
792
697
  /**
793
- * Basic organization information in the contact center system
698
+ * Basic organization information carried by the `organization` section of the org desktop-login
699
+ * aggregate.
794
700
  * @private
795
701
  * @ignore
796
702
  */
@@ -799,11 +705,10 @@ export type OrgInfo = {
799
705
  tenantId: string;
800
706
  /** Organization timezone */
801
707
  timezone: string;
802
- /** Current environment (e.g., 'produs1', 'intgus1') */
803
- environment: string;
804
708
  };
805
709
  /**
806
- * Organization-wide feature settings and configurations
710
+ * Organization-wide feature settings carried by the `organizationSetting` section of the org
711
+ * desktop-login aggregate.
807
712
  * @private
808
713
  */
809
714
  export type OrgSettings = {
@@ -833,12 +738,13 @@ export type SiteInfo = {
833
738
  systemDefault: boolean;
834
739
  };
835
740
  /**
836
- * Tenant-level configuration data and settings
741
+ * Tenant-level configuration carried by the `tenantConfiguration` section of the org
742
+ * desktop-login aggregate.
837
743
  * @private
838
744
  */
839
745
  export type TenantData = {
840
- /** Desktop inactivity timeout in minutes */
841
- timeoutDesktopInactivityMins: number;
746
+ /** Desktop inactivity timeout in minutes. Omitted when the timeout is not enabled. */
747
+ timeoutDesktopInactivityMins?: number;
842
748
  /** Whether default DN is enforced */
843
749
  forceDefaultDn: boolean;
844
750
  /** Regex pattern for default DN validation */
@@ -861,16 +767,44 @@ export type TenantData = {
861
767
  lostConnectionRecoveryTimeout: number;
862
768
  };
863
769
  /**
864
- * URL mapping configuration for external integrations
770
+ * URL mappings carried by the `urlMappings` section of the org desktop-login aggregate, keyed by
771
+ * mapping name. The aggregate returns `{}` when the organization has no Acqueon configuration.
865
772
  * @public
866
773
  */
867
- export type URLMapping = {
868
- id: string;
869
- name: string;
870
- url: string;
871
- links: string[];
872
- createdTime: number;
873
- lastUpdatedTime: number;
774
+ export type OrgUrlMappings = {
775
+ /** Acqueon API endpoint URL */
776
+ ACQUEON_API_URL?: string;
777
+ /** Acqueon console URL */
778
+ ACQUEON_CONSOLE_URL?: string;
779
+ };
780
+ /**
781
+ * Organization-level Microsoft Teams integration configuration carried by the `microsoftConfig`
782
+ * section of the org desktop-login aggregate. The whole section is absent when the organization
783
+ * has no Microsoft integration.
784
+ * @public
785
+ */
786
+ export type MicrosoftConfig = {
787
+ /** Whether to show user details in Teams */
788
+ showUserDetails?: boolean;
789
+ /** Whether to sync agent state with Teams */
790
+ stateSynchronization?: boolean;
791
+ /** Whether the integration is enabled organization-wide */
792
+ active?: boolean;
793
+ /** Idle codes mapped to Teams presence states */
794
+ idleCodes?: Record<string, string>;
795
+ };
796
+ /**
797
+ * Organization-level Webex integration configuration carried by the `webexConfig` section of the
798
+ * org desktop-login aggregate.
799
+ * @public
800
+ */
801
+ export type WebexConfig = {
802
+ /** Whether to show user details in Webex */
803
+ showUserDetails?: boolean;
804
+ /** Whether to sync agent state with Webex */
805
+ stateSynchronization?: boolean;
806
+ /** Idle codes mapped to Webex presence states */
807
+ idleCodes?: Record<string, string>;
874
808
  };
875
809
  /**
876
810
  * Constant representing idle code
@@ -940,6 +874,8 @@ export type DialPlanEntity = {
940
874
  strippedChars: string;
941
875
  /** Name of the dial plan */
942
876
  name: string;
877
+ /** Whether the dial plan is active */
878
+ active: boolean;
943
879
  };
944
880
  /**
945
881
  * Complete dial plan configuration for number handling
@@ -1041,18 +977,6 @@ export type WrapupData = {
1041
977
  allowCancelAutoWrapup?: boolean;
1042
978
  };
1043
979
  };
1044
- /**
1045
- * Team configuration information
1046
- * @public
1047
- */
1048
- export type Team = {
1049
- /** Unique team identifier */
1050
- teamId: string;
1051
- /** Team display name */
1052
- teamName: string;
1053
- /** Optional desktop layout configuration identifier */
1054
- desktopLayoutId?: string;
1055
- };
1056
980
  /**
1057
981
  * Basic queue configuration information
1058
982
  * @public
@@ -1074,11 +998,12 @@ export type URLMappings = {
1074
998
  acqueonConsoleUrl: string;
1075
999
  };
1076
1000
  /**
1077
- * AI feature resource row returned by /v2/ai-feature API.
1001
+ * AI feature flags carried by the `aiFeature` section of the org desktop-login aggregate.
1078
1002
  * @public
1079
1003
  */
1080
1004
  export type AIFeatureFlags = {
1081
- id: string;
1005
+ /** Not carried by the aggregate; retained for responses that still supply a record id. */
1006
+ id?: string;
1082
1007
  realtimeTranscripts?: {
1083
1008
  enable?: boolean;
1084
1009
  agentInclusionType?: string;
@@ -1103,26 +1028,40 @@ export type AIFeatureFlags = {
1103
1028
  queuesInclusionType?: string;
1104
1029
  surveyDataSource?: string;
1105
1030
  };
1106
- links?: string[];
1107
- createdTime?: number;
1108
- lastUpdatedTime?: number;
1109
1031
  };
1110
1032
  /**
1111
- * Response type for list AI feature resources API.
1033
+ * Aggregated organization configuration returned by `organization/{orgId}/desktop-login`.
1034
+ * Replaces the separate organization, organization-setting, tenant-configuration,
1035
+ * org-url-mapping and ai-feature calls.
1112
1036
  * @public
1113
1037
  */
1114
- export type AIFeatureFlagsResponse = {
1115
- meta?: {
1116
- orgid?: string;
1117
- page?: number;
1118
- pageSize?: number;
1119
- totalPages?: number;
1120
- totalRecords?: number;
1121
- links?: {
1122
- self?: string;
1123
- };
1124
- };
1125
- data: AIFeatureFlags[];
1038
+ export type OrgDesktopLoginResponse = {
1039
+ /** Organization identity and timezone */
1040
+ organization: OrgInfo;
1041
+ /** Organization-wide feature settings */
1042
+ organizationSetting: OrgSettings;
1043
+ /** Tenant-level configuration */
1044
+ tenantConfiguration: TenantData;
1045
+ /** External integration URLs, keyed by mapping name */
1046
+ urlMappings?: OrgUrlMappings;
1047
+ /** AI feature flags */
1048
+ aiFeature?: AIFeatureFlags;
1049
+ /** Microsoft Teams integration configuration; absent when not configured */
1050
+ microsoftConfig?: MicrosoftConfig;
1051
+ /** Webex integration configuration */
1052
+ webexConfig?: WebexConfig;
1053
+ };
1054
+ /**
1055
+ * Aggregated user configuration returned by
1056
+ * `organization/{orgId}/v2/user/by-ci-user-id/{ciUserId}/desktop-login`.
1057
+ * Replaces the separate user and agent-profile calls.
1058
+ * @public
1059
+ */
1060
+ export type UserDesktopLoginResponse = {
1061
+ /** Agent identity */
1062
+ user: AgentResponse;
1063
+ /** Desktop Profile settings for the agent */
1064
+ agentProfile: AgentProfile;
1126
1065
  };
1127
1066
  /**
1128
1067
  * Comprehensive agent profile configuration in the contact center system
@@ -1144,8 +1083,8 @@ export type Profile = {
1144
1083
  /** Whether to sync agent state with Webex */
1145
1084
  stateSynchronizationWebex?: boolean;
1146
1085
  };
1147
- /** List of teams the agent belongs to */
1148
- teams: Team[];
1086
+ /** List of teams the agent belongs to, as returned by the team API */
1087
+ teams: TeamList[];
1149
1088
  /** Agent's default dial number */
1150
1089
  defaultDn: string;
1151
1090
  dn?: string;
@@ -1261,8 +1200,6 @@ export type Profile = {
1261
1200
  isAnalyzerEnabled?: boolean;
1262
1201
  /** Tenant timezone */
1263
1202
  tenantTimezone?: string;
1264
- /** Current environment (e.g., 'produs1', 'intgus1') */
1265
- environment?: string;
1266
1203
  /** Available voice login options */
1267
1204
  loginVoiceOptions?: LoginOption[];
1268
1205
  /** Current login device type */
package/dist/webex.js CHANGED
@@ -43,7 +43,7 @@ if (!global.Buffer) {
43
43
  */
44
44
  const Webex = _webexCore.default.extend({
45
45
  webex: true,
46
- version: `3.12.0-next.149`
46
+ version: `3.12.0-next.150`
47
47
  });
48
48
 
49
49
  // The standalone UMD bundle exports the Webex constructor as its default value. Attach the
package/package.json CHANGED
@@ -84,5 +84,5 @@
84
84
  "typedoc": "^0.25.0",
85
85
  "typescript": "5.4.5"
86
86
  },
87
- "version": "3.12.0-next.149"
87
+ "version": "3.12.0-next.150"
88
88
  }
package/src/cc.ts CHANGED
@@ -170,7 +170,7 @@ import type {
170
170
  *
171
171
  * // Login with browser-based calling
172
172
  * await cc.stationLogin({
173
- * teamId: profile.teams[0].teamId,
173
+ * teamId: profile.teams[0].id,
174
174
  * loginOption: 'BROWSER'
175
175
  * });
176
176
  *
@@ -701,12 +701,12 @@ export default class ContactCenter extends WebexPlugin implements IContactCenter
701
701
  *
702
702
  * console.log('Agent ID:', profile.agentId);
703
703
  * console.log('Default DN:', profile.defaultDn);
704
- * console.log('Teams:', profile.teams.map(t => t.teamId));
704
+ * console.log('Teams:', profile.teams.map(t => t.id));
705
705
  * console.log('WebRTC Enabled:', profile.webRtcEnabled);
706
706
  * console.log('Supported Login Options:', profile.loginVoiceOptions);
707
707
  *
708
708
  * // Now you can proceed with station login, state changes, etc.
709
- * await cc.stationLogin({ teamId: profile.teams[0].teamId, loginOption: 'BROWSER' });
709
+ * await cc.stationLogin({ teamId: profile.teams[0].id, loginOption: 'BROWSER' });
710
710
  * ```
711
711
  */
712
712
  public async register(): Promise<Profile> {
@@ -1436,7 +1436,7 @@ export default class ContactCenter extends WebexPlugin implements IContactCenter
1436
1436
  {
1437
1437
  ...MetricsManager.getCommonTrackingFieldForAQMResponse(agentStatusResponse),
1438
1438
  requestedState: data.state,
1439
- teamId: this.agentConfig?.teams[0]?.teamId ?? EMPTY_STRING,
1439
+ teamId: this.agentConfig?.teams[0]?.id ?? EMPTY_STRING,
1440
1440
  status: agentStatusResponse.data?.status,
1441
1441
  subStatus: agentStatusResponse.data?.subStatus,
1442
1442
  auxCodeId: data.auxCodeId,
package/src/index.ts CHANGED
@@ -206,10 +206,14 @@ export type {
206
206
  export type {
207
207
  /** Profile interface */
208
208
  Profile,
209
- /** Response type from getUserUsingCI method */
209
+ /** Aggregated organization configuration from getOrgDesktopLoginConfig */
210
+ OrgDesktopLoginResponse,
211
+ /** Aggregated user configuration from getUserDesktopLoginConfig */
212
+ UserDesktopLoginResponse,
213
+ /** Agent identity, the `user` section of the user desktop-login aggregate */
210
214
  AgentResponse,
211
- /** Response from getDesktopProfileById */
212
- DesktopProfileResponse,
215
+ /** Desktop Profile settings, the `agentProfile` section of the user desktop-login aggregate */
216
+ AgentProfile,
213
217
  /** Response from getMultimediaProfileById */
214
218
  MultimediaProfileResponse,
215
219
  /** Response from getListOfTeams */
@@ -218,14 +222,18 @@ export type {
218
222
  ListAuxCodesResponse,
219
223
  /** Response from getSiteInfo */
220
224
  SiteInfo,
221
- /** Response from getOrgInfo */
225
+ /** Organization identity, the `organization` section of the org desktop-login aggregate */
222
226
  OrgInfo,
223
- /** Response from getOrganizationSetting */
227
+ /** Organization settings, the `organizationSetting` section of the org desktop-login aggregate */
224
228
  OrgSettings,
225
- /** Response from getTenantData */
229
+ /** Tenant configuration, the `tenantConfiguration` section of the org desktop-login aggregate */
226
230
  TenantData,
227
- /** Response from getURLMapping */
228
- URLMapping,
231
+ /** Microsoft Teams integration configuration, from the org desktop-login aggregate */
232
+ MicrosoftConfig,
233
+ /** Webex integration configuration, from the org desktop-login aggregate */
234
+ WebexConfig,
235
+ /** External integration URLs, the `urlMappings` section of the org desktop-login aggregate */
236
+ OrgUrlMappings,
229
237
  /** Response from getDialPlanData */
230
238
  DialPlanEntity,
231
239
  /** Auxiliary code information */
@@ -14,7 +14,7 @@ const cc = webex.cc;
14
14
  // Register and login
15
15
  const profile = await cc.register();
16
16
  await cc.stationLogin({
17
- teamId: profile.teams[0].teamId,
17
+ teamId: profile.teams[0].id,
18
18
  loginOption: 'BROWSER',
19
19
  });
20
20