@or-sdk/hitl 0.35.0-beta.2816.0 → 0.35.0

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 (219) hide show
  1. package/CHANGELOG.md +271 -0
  2. package/README.md +65 -0
  3. package/dist/cjs/AppError.js.map +1 -1
  4. package/dist/cjs/EKS.js.map +1 -1
  5. package/dist/cjs/HITL.js +1 -1
  6. package/dist/cjs/HITL.js.map +1 -1
  7. package/dist/cjs/api/Agents.js +108 -104
  8. package/dist/cjs/api/Agents.js.map +1 -1
  9. package/dist/cjs/api/CannedMessages.js +54 -40
  10. package/dist/cjs/api/CannedMessages.js.map +1 -1
  11. package/dist/cjs/api/Commands.js +31 -16
  12. package/dist/cjs/api/Commands.js.map +1 -1
  13. package/dist/cjs/api/Conferences.js +44 -31
  14. package/dist/cjs/api/Conferences.js.map +1 -1
  15. package/dist/cjs/api/ContactRuleGroups.js +56 -33
  16. package/dist/cjs/api/ContactRuleGroups.js.map +1 -1
  17. package/dist/cjs/api/Contacts.js +14 -7
  18. package/dist/cjs/api/Contacts.js.map +1 -1
  19. package/dist/cjs/api/ContactsMeta.js +19 -9
  20. package/dist/cjs/api/ContactsMeta.js.map +1 -1
  21. package/dist/cjs/api/EventTemplates.js +55 -37
  22. package/dist/cjs/api/EventTemplates.js.map +1 -1
  23. package/dist/cjs/api/Filters.js +48 -45
  24. package/dist/cjs/api/Filters.js.map +1 -1
  25. package/dist/cjs/api/HITLBase.js +4 -0
  26. package/dist/cjs/api/HITLBase.js.map +1 -1
  27. package/dist/cjs/api/Helpers.js +14 -6
  28. package/dist/cjs/api/Helpers.js.map +1 -1
  29. package/dist/cjs/api/Listeners.js +58 -44
  30. package/dist/cjs/api/Listeners.js.map +1 -1
  31. package/dist/cjs/api/Migrations.js +66 -57
  32. package/dist/cjs/api/Migrations.js.map +1 -1
  33. package/dist/cjs/api/RuleGroups.js +56 -33
  34. package/dist/cjs/api/RuleGroups.js.map +1 -1
  35. package/dist/cjs/api/SessionEvents.js +66 -40
  36. package/dist/cjs/api/SessionEvents.js.map +1 -1
  37. package/dist/cjs/api/SessionRelations.js +26 -21
  38. package/dist/cjs/api/SessionRelations.js.map +1 -1
  39. package/dist/cjs/api/Sessions.js +128 -126
  40. package/dist/cjs/api/Sessions.js.map +1 -1
  41. package/dist/cjs/api/Settings.js +76 -35
  42. package/dist/cjs/api/Settings.js.map +1 -1
  43. package/dist/cjs/api/Tasks.js +28 -16
  44. package/dist/cjs/api/Tasks.js.map +1 -1
  45. package/dist/cjs/api/Versions.js +15 -8
  46. package/dist/cjs/api/Versions.js.map +1 -1
  47. package/dist/cjs/constants.js +2 -1
  48. package/dist/cjs/constants.js.map +1 -1
  49. package/dist/cjs/index.js +21 -1
  50. package/dist/cjs/index.js.map +1 -1
  51. package/dist/cjs/types/agents.js.map +1 -1
  52. package/dist/cjs/types/commands.js.map +1 -1
  53. package/dist/cjs/types/common.js.map +1 -1
  54. package/dist/cjs/types/conferences.js.map +1 -1
  55. package/dist/cjs/types/listeners.js.map +1 -1
  56. package/dist/cjs/types/migrations.js.map +1 -1
  57. package/dist/cjs/types/tasks.js.map +1 -1
  58. package/dist/esm/EKS.js.map +1 -1
  59. package/dist/esm/HITL.js +1 -1
  60. package/dist/esm/HITL.js.map +1 -1
  61. package/dist/esm/api/Agents.js +61 -81
  62. package/dist/esm/api/Agents.js.map +1 -1
  63. package/dist/esm/api/CannedMessages.js +30 -31
  64. package/dist/esm/api/CannedMessages.js.map +1 -1
  65. package/dist/esm/api/Commands.js +17 -10
  66. package/dist/esm/api/Commands.js.map +1 -1
  67. package/dist/esm/api/Conferences.js +34 -29
  68. package/dist/esm/api/Conferences.js.map +1 -1
  69. package/dist/esm/api/ContactRuleGroups.js +34 -30
  70. package/dist/esm/api/ContactRuleGroups.js.map +1 -1
  71. package/dist/esm/api/Contacts.js +1 -5
  72. package/dist/esm/api/Contacts.js.map +1 -1
  73. package/dist/esm/api/ContactsMeta.js +4 -7
  74. package/dist/esm/api/ContactsMeta.js.map +1 -1
  75. package/dist/esm/api/EventTemplates.js +25 -28
  76. package/dist/esm/api/EventTemplates.js.map +1 -1
  77. package/dist/esm/api/Filters.js +39 -43
  78. package/dist/esm/api/Filters.js.map +1 -1
  79. package/dist/esm/api/HITLBase.js +3 -0
  80. package/dist/esm/api/HITLBase.js.map +1 -1
  81. package/dist/esm/api/Helpers.js +1 -4
  82. package/dist/esm/api/Helpers.js.map +1 -1
  83. package/dist/esm/api/Listeners.js +34 -37
  84. package/dist/esm/api/Listeners.js.map +1 -1
  85. package/dist/esm/api/Migrations.js +34 -49
  86. package/dist/esm/api/Migrations.js.map +1 -1
  87. package/dist/esm/api/RuleGroups.js +34 -30
  88. package/dist/esm/api/RuleGroups.js.map +1 -1
  89. package/dist/esm/api/SessionEvents.js +36 -34
  90. package/dist/esm/api/SessionEvents.js.map +1 -1
  91. package/dist/esm/api/SessionRelations.js +10 -19
  92. package/dist/esm/api/SessionRelations.js.map +1 -1
  93. package/dist/esm/api/Sessions.js +80 -102
  94. package/dist/esm/api/Sessions.js.map +1 -1
  95. package/dist/esm/api/Settings.js +38 -27
  96. package/dist/esm/api/Settings.js.map +1 -1
  97. package/dist/esm/api/Tasks.js +14 -10
  98. package/dist/esm/api/Tasks.js.map +1 -1
  99. package/dist/esm/api/Versions.js +2 -6
  100. package/dist/esm/api/Versions.js.map +1 -1
  101. package/dist/esm/constants.js +1 -0
  102. package/dist/esm/constants.js.map +1 -1
  103. package/dist/esm/index.js +1 -0
  104. package/dist/esm/index.js.map +1 -1
  105. package/dist/esm/types/agents.js.map +1 -1
  106. package/dist/esm/types/commands.js.map +1 -1
  107. package/dist/esm/types/common.js.map +1 -1
  108. package/dist/esm/types/conferences.js.map +1 -1
  109. package/dist/esm/types/listeners.js.map +1 -1
  110. package/dist/esm/types/migrations.js.map +1 -1
  111. package/dist/esm/types/tasks.js.map +1 -1
  112. package/dist/types/EKS.d.ts.map +1 -1
  113. package/dist/types/HITL.d.ts.map +1 -1
  114. package/dist/types/api/Agents.d.ts +7 -5
  115. package/dist/types/api/Agents.d.ts.map +1 -1
  116. package/dist/types/api/CannedMessages.d.ts +3 -3
  117. package/dist/types/api/CannedMessages.d.ts.map +1 -1
  118. package/dist/types/api/Commands.d.ts +1 -1
  119. package/dist/types/api/Commands.d.ts.map +1 -1
  120. package/dist/types/api/Conferences.d.ts +3 -3
  121. package/dist/types/api/Conferences.d.ts.map +1 -1
  122. package/dist/types/api/ContactRuleGroups.d.ts +4 -4
  123. package/dist/types/api/ContactRuleGroups.d.ts.map +1 -1
  124. package/dist/types/api/Contacts.d.ts.map +1 -1
  125. package/dist/types/api/ContactsMeta.d.ts.map +1 -1
  126. package/dist/types/api/EventTemplates.d.ts +2 -2
  127. package/dist/types/api/EventTemplates.d.ts.map +1 -1
  128. package/dist/types/api/Filters.d.ts +2 -2
  129. package/dist/types/api/Filters.d.ts.map +1 -1
  130. package/dist/types/api/HITLBase.d.ts +3 -0
  131. package/dist/types/api/HITLBase.d.ts.map +1 -1
  132. package/dist/types/api/Helpers.d.ts.map +1 -1
  133. package/dist/types/api/Listeners.d.ts +4 -4
  134. package/dist/types/api/Listeners.d.ts.map +1 -1
  135. package/dist/types/api/Migrations.d.ts +7 -6
  136. package/dist/types/api/Migrations.d.ts.map +1 -1
  137. package/dist/types/api/RuleGroups.d.ts +4 -4
  138. package/dist/types/api/RuleGroups.d.ts.map +1 -1
  139. package/dist/types/api/SessionEvents.d.ts +11 -5
  140. package/dist/types/api/SessionEvents.d.ts.map +1 -1
  141. package/dist/types/api/SessionRelations.d.ts +1 -1
  142. package/dist/types/api/SessionRelations.d.ts.map +1 -1
  143. package/dist/types/api/Sessions.d.ts +21 -19
  144. package/dist/types/api/Sessions.d.ts.map +1 -1
  145. package/dist/types/api/Settings.d.ts +5 -3
  146. package/dist/types/api/Settings.d.ts.map +1 -1
  147. package/dist/types/api/Tasks.d.ts +2 -2
  148. package/dist/types/api/Tasks.d.ts.map +1 -1
  149. package/dist/types/api/Versions.d.ts +1 -1
  150. package/dist/types/api/Versions.d.ts.map +1 -1
  151. package/dist/types/constants.d.ts +4 -3
  152. package/dist/types/constants.d.ts.map +1 -1
  153. package/dist/types/index.d.ts +1 -0
  154. package/dist/types/index.d.ts.map +1 -1
  155. package/dist/types/types/agents.d.ts.map +1 -1
  156. package/dist/types/types/canned-messages.d.ts.map +1 -1
  157. package/dist/types/types/commands.d.ts.map +1 -1
  158. package/dist/types/types/common.d.ts +2 -1
  159. package/dist/types/types/common.d.ts.map +1 -1
  160. package/dist/types/types/conferences.d.ts.map +1 -1
  161. package/dist/types/types/contacts-meta.d.ts.map +1 -1
  162. package/dist/types/types/contacts.d.ts.map +1 -1
  163. package/dist/types/types/event-templates.d.ts.map +1 -1
  164. package/dist/types/types/filters.d.ts.map +1 -1
  165. package/dist/types/types/listeners.d.ts.map +1 -1
  166. package/dist/types/types/migrations.d.ts.map +1 -1
  167. package/dist/types/types/read-events.d.ts.map +1 -1
  168. package/dist/types/types/rule-groups.d.ts.map +1 -1
  169. package/dist/types/types/session-events.d.ts +2 -0
  170. package/dist/types/types/session-events.d.ts.map +1 -1
  171. package/dist/types/types/session-relations.d.ts.map +1 -1
  172. package/dist/types/types/sessions.d.ts +1 -0
  173. package/dist/types/types/sessions.d.ts.map +1 -1
  174. package/dist/types/types/settings.d.ts +1 -0
  175. package/dist/types/types/settings.d.ts.map +1 -1
  176. package/dist/types/types/tasks.d.ts.map +1 -1
  177. package/package.json +8 -8
  178. package/src/EKS.ts +1 -2
  179. package/src/HITL.ts +15 -2
  180. package/src/api/Agents.ts +90 -27
  181. package/src/api/CannedMessages.ts +42 -12
  182. package/src/api/Commands.ts +12 -7
  183. package/src/api/Conferences.ts +45 -19
  184. package/src/api/ContactRuleGroups.ts +41 -15
  185. package/src/api/Contacts.ts +9 -0
  186. package/src/api/ContactsMeta.ts +12 -2
  187. package/src/api/EventTemplates.ts +32 -10
  188. package/src/api/Filters.ts +67 -28
  189. package/src/api/HITLBase.ts +4 -0
  190. package/src/api/Helpers.ts +6 -0
  191. package/src/api/Listeners.ts +49 -13
  192. package/src/api/Migrations.ts +62 -15
  193. package/src/api/RuleGroups.ts +41 -15
  194. package/src/api/SessionEvents.ts +70 -21
  195. package/src/api/SessionRelations.ts +31 -8
  196. package/src/api/Sessions.ts +158 -52
  197. package/src/api/Settings.ts +56 -13
  198. package/src/api/Tasks.ts +9 -8
  199. package/src/api/Versions.ts +12 -1
  200. package/src/constants.ts +3 -3
  201. package/src/index.ts +21 -0
  202. package/src/types/agents.ts +1 -0
  203. package/src/types/canned-messages.ts +1 -0
  204. package/src/types/commands.ts +1 -0
  205. package/src/types/common.ts +2 -1
  206. package/src/types/conferences.ts +1 -0
  207. package/src/types/contacts-meta.ts +1 -0
  208. package/src/types/contacts.ts +1 -0
  209. package/src/types/event-templates.ts +1 -0
  210. package/src/types/filters.ts +1 -0
  211. package/src/types/listeners.ts +1 -0
  212. package/src/types/migrations.ts +1 -0
  213. package/src/types/read-events.ts +1 -0
  214. package/src/types/rule-groups.ts +1 -0
  215. package/src/types/session-events.ts +6 -0
  216. package/src/types/session-relations.ts +1 -0
  217. package/src/types/sessions.ts +2 -0
  218. package/src/types/settings.ts +4 -0
  219. package/src/types/tasks.ts +1 -0
@@ -1,4 +1,7 @@
1
- import _ from 'lodash';
1
+ import URI from 'urijs';
2
+
3
+ import { DEFAULT_OMIT_FIELDS } from '../constants';
4
+ import { ApiVersionOptions } from '../types';
2
5
  import {
3
6
  GetMigrationsOptions,
4
7
  GetMigrationsResponse,
@@ -12,8 +15,8 @@ import {
12
15
  SyncDefaultRecordsOptions,
13
16
  SyncDefaultRecordsResponse,
14
17
  } from '../types/migrations';
18
+
15
19
  import { HITLBase } from './HITLBase';
16
- import URI from 'urijs';
17
20
 
18
21
  export class Migrations extends HITLBase {
19
22
  protected static readonly MODULE_URL = 'migrations';
@@ -22,92 +25,136 @@ export class Migrations extends HITLBase {
22
25
  protected static MIGRATIONS_LOCK_URL = 'lock';
23
26
  protected static MIGRATIONS_STATUS_URL = 'status';
24
27
 
28
+ /**
29
+ * @description Get list of pending migrations
30
+ * @param options
31
+ */
25
32
  public static async getListOfMigrations(
26
- options: GetMigrationsOptions = {}
33
+ { appVersion, ...options }: GetMigrationsOptions = {}
27
34
  ): Promise<GetMigrationsResponse> {
28
35
  const route = this.getBaseUrl(options);
29
- const params = _.pick(options, ['appVersion']);
30
36
 
31
37
  return this.request({
32
38
  route,
33
- params,
39
+ params: { appVersion },
40
+ ...this.getBaseSettings(options),
34
41
  });
35
42
  }
36
43
 
44
+ /**
45
+ * @description Run migrations
46
+ * @param options
47
+ */
37
48
  public static async runAllMigrations(
38
- options: RunMigrationsOptions = {}
49
+ { meta, ...options }: RunMigrationsOptions = {}
39
50
  ): Promise<RunMigrationsResponse> {
40
51
  const route = this.getBaseUrl(options);
41
- const params = _.omit(options, ['version', 'meta']);
42
- const data = _.pick(options, ['meta']);
52
+ const params = Object.fromEntries(
53
+ Object.entries(options).filter(([key]) => !DEFAULT_OMIT_FIELDS.includes(key))
54
+ );
43
55
 
44
56
  return this.request({
45
57
  route,
46
58
  method: 'POST',
47
59
  params,
48
- data,
60
+ data: { meta },
61
+ ...this.getBaseSettings(options),
49
62
  });
50
63
  }
51
64
 
52
- public static async getRunMigrationsStatus(): Promise<GetRunMigrationsStatusResponse> {
65
+ /**
66
+ * @description Get status of running migrations
67
+ * @param options
68
+ */
69
+ public static async getRunMigrationsStatus(options: ApiVersionOptions = {}): Promise<GetRunMigrationsStatusResponse> {
53
70
  const baseUrl = this.getBaseUrl({});
54
71
  const route = new URI(baseUrl).segment(this.MIGRATIONS_STATUS_URL).href();
55
72
 
56
73
  return this.request({
57
74
  route,
75
+ ...this.getBaseSettings(options),
58
76
  });
59
77
  }
60
78
 
61
- public static async deleteMigrationsTableLock() {
79
+ /**
80
+ * @description Delete migrations table lock (set during migration runs)
81
+ * @param options
82
+ */
83
+ public static async deleteMigrationsTableLock(options: ApiVersionOptions = {}) {
62
84
  const baseUrl = this.getBaseUrl({});
63
85
  const route = new URI(baseUrl).segment(this.MIGRATIONS_LOCK_URL).href();
64
86
 
65
87
  return this.request({
66
88
  route,
67
89
  method: 'DELETE',
90
+ ...this.getBaseSettings(options),
68
91
  });
69
92
  }
70
93
 
71
- public static async getMigrationsInfo(): Promise<GetMigrationsInfoResponse> {
94
+ /**
95
+ * @description Get migrations info about compatibility with UI versions
96
+ * @param options
97
+ */
98
+ public static async getMigrationsInfo(options: ApiVersionOptions = {}): Promise<GetMigrationsInfoResponse> {
72
99
  const baseUrl = this.getBaseUrl({});
73
100
  const route = new URI(baseUrl).segment(this.MIGRATIONS_INFO_URL).href();
74
101
 
75
102
  return this.request({
76
103
  route,
104
+ ...this.getBaseSettings(options),
77
105
  });
78
106
  }
79
107
 
108
+ /**
109
+ * @description Get default records for some tables (settings, filters, eventTemplates, rule_groups)
110
+ * @param options
111
+ */
80
112
  public static async getTableDefaultRecords(options: GetDefaultRecordsOptions): Promise<GetDefaultRecordsResponse> {
81
113
  const baseUrl = this.getBaseUrl({});
82
114
  const route = new URI(baseUrl).segment(this.DEFAULT_RECORDS_URL).href();
83
- const params = _.omit(options, ['version']);
115
+ const params = Object.fromEntries(
116
+ Object.entries(options).filter(([key]) => !['version'].includes(key))
117
+ );
84
118
 
85
119
  return this.request({
86
120
  route,
87
121
  method: 'GET',
88
122
  params,
123
+ ...this.getBaseSettings(options),
89
124
  });
90
125
  }
91
126
 
92
- public static async createTableDefaultRecords(): Promise<CreateDefaultRecordsResponse> {
127
+ /**
128
+ * @description Add default records for some tables (settings, filters, event_templates, rule_groups)
129
+ * @param options
130
+ */
131
+ public static async createTableDefaultRecords(options: ApiVersionOptions = {}): Promise<CreateDefaultRecordsResponse> {
93
132
  const baseUrl = this.getBaseUrl({});
94
133
  const route = new URI(baseUrl).segment(this.DEFAULT_RECORDS_URL).href();
95
134
 
96
135
  return this.request({
97
136
  route,
98
137
  method: 'POST',
138
+ ...this.getBaseSettings(options),
99
139
  });
100
140
  }
101
141
 
142
+ /**
143
+ * @description Sync default records for some tables (settings, filters, eventTemplates, rule_groups)
144
+ * @param options
145
+ */
102
146
  public static async syncTableDefaultRecords(options: SyncDefaultRecordsOptions): Promise<SyncDefaultRecordsResponse> {
103
147
  const baseUrl = this.getBaseUrl({});
104
148
  const route = new URI(baseUrl).segment(this.DEFAULT_RECORDS_URL).href();
105
- const params = _.omit(options, ['version']);
149
+ const params = Object.fromEntries(
150
+ Object.entries(options).filter(([key]) => !DEFAULT_OMIT_FIELDS.includes(key))
151
+ );
106
152
 
107
153
  return this.request({
108
154
  route,
109
155
  method: 'PUT',
110
156
  params,
157
+ ...this.getBaseSettings(options),
111
158
  });
112
159
  }
113
160
  }
@@ -1,5 +1,4 @@
1
- import _ from 'lodash';
2
-
1
+ import { DEFAULT_OMIT_FIELDS } from '../constants';
3
2
  import {
4
3
  SearchRuleGroupsOptions,
5
4
  SearchRuleGroupsResponse,
@@ -8,61 +7,88 @@ import {
8
7
  UpdateRuleGroupOptions,
9
8
  DeleteRuleGroupOptions,
10
9
  } from '../types/rule-groups';
10
+
11
11
  import { HITLBase } from './HITLBase';
12
12
 
13
13
  export class RuleGroups extends HITLBase {
14
14
  protected static MODULE_URL = 'rule-groups';
15
15
 
16
+ /**
17
+ * @description Get/search Rule Groups
18
+ * @param options
19
+ */
16
20
  public static searchRuleGroups(
17
- options: SearchRuleGroupsOptions = {}
21
+ { groupIdList, ...options }: SearchRuleGroupsOptions = {}
18
22
  ): Promise<SearchRuleGroupsResponse | RuleGroup> {
19
23
  const route = this.getBaseUrl(options);
20
- const params = _.omit(options, ['version', 'groupIdList', 'accountId']);
21
- const data = _.pick(options, 'groupIdList');
24
+ const params = Object.fromEntries(
25
+ Object.entries(options).filter(([key]) => ![...DEFAULT_OMIT_FIELDS, 'accountId'].includes(key))
26
+ );
22
27
 
23
28
  return this.request({
24
29
  route,
25
30
  params,
26
- data,
31
+ data: { groupIdList },
32
+ ...this.getBaseSettings(options),
27
33
  });
28
34
  }
29
35
 
36
+ /**
37
+ * @description Create Rule Group
38
+ * @param options
39
+ */
30
40
  public static createRuleGroup(
31
- options: CreateRuleGroupOptions
41
+ { name, rules, groupId, ...options }: CreateRuleGroupOptions
32
42
  ): Promise<RuleGroup> {
33
43
  const route = this.getBaseUrl(options);
34
- const data = _.pick(options, ['name', 'rules']);
35
44
 
36
45
  return this.request({
37
46
  method: 'POST',
38
47
  route,
39
- data,
48
+ data: {
49
+ name,
50
+ rules,
51
+ groupId,
52
+ },
53
+ ...this.getBaseSettings(options),
40
54
  });
41
55
  }
42
56
 
57
+ /**
58
+ * @description Update Rule Group
59
+ * @param options
60
+ */
43
61
  public static updateRuleGroup(
44
- options: UpdateRuleGroupOptions
62
+ { groupId, name, rules, ...options }: UpdateRuleGroupOptions
45
63
  ): Promise<RuleGroup> {
46
64
  const route = this.getBaseUrl(options);
47
- const data = _.pick(options, ['groupId', 'name', 'rules']);
48
65
 
49
66
  return this.request({
50
67
  method: 'PUT',
51
68
  route,
52
- data,
69
+ data: {
70
+ groupId,
71
+ name,
72
+ rules,
73
+ },
74
+ ...this.getBaseSettings(options),
53
75
  });
54
76
  }
55
77
 
78
+ /**
79
+ * @description Delete Rule Group
80
+ * @param options
81
+ */
56
82
  public static deleteRuleGroup(
57
- options: DeleteRuleGroupOptions
83
+ { groupId, ...options }: DeleteRuleGroupOptions
58
84
  ): Promise<void> {
59
85
  const route = this.getBaseUrl(options);
60
- const params = _.pick(options, ['groupId']);
61
86
 
62
87
  return this.request({
63
88
  method: 'DELETE',
64
89
  route,
65
- params,
90
+ params: { groupId },
91
+ ...this.getBaseSettings(options),
66
92
  });
67
93
  }
68
94
  }
@@ -1,81 +1,130 @@
1
- import _ from 'lodash';
2
1
  import URI from 'urijs';
3
2
 
4
- import { HITLBase } from './HITLBase';
3
+ import { DEFAULT_OMIT_FIELDS } from '../constants';
4
+ import {
5
+ GetNewEventsCountOptions,
6
+ GetNewEventsCountResponse,
7
+ SaveLastReadEventOptions,
8
+ } from '../types/read-events';
5
9
  import {
6
10
  GetSessionEventsOptions,
7
11
  GetSessionEventsResponse,
8
12
  AddEventsOptions,
9
13
  AddEventsResponse,
14
+ GetBulkSessionEventsOptions,
15
+ GetBulkSessionsEventsResponse,
10
16
  } from '../types/session-events';
11
- import {
12
- GetNewEventsCountOptions,
13
- GetNewEventsCountResponse,
14
- SaveLastReadEventOptions,
15
- } from '../types/read-events';
17
+
18
+ import { HITLBase } from './HITLBase';
16
19
 
17
20
  export class SessionEvents extends HITLBase {
18
21
  protected static MODULE_URL = 'session-events';
22
+ protected static GET_BULK_EVENTS_URL = 'bulk';
19
23
  protected static GET_EVENTS_COUNT_URL = 'get-new-events';
20
24
  protected static SAVE_READ_EVENT_URL = 'save-read-event';
21
25
 
26
+ /**
27
+ * @description Get Event list of a HitL Session
28
+ * @param options
29
+ */
22
30
  public static async getSessionEventsList(
23
31
  options: GetSessionEventsOptions
24
32
  ): Promise<GetSessionEventsResponse> {
25
33
  const route = this.getBaseUrl(options);
26
- const params = _.omit(options, ['version']);
34
+ const params = Object.fromEntries(
35
+ Object.entries(options).filter(([key]) => !DEFAULT_OMIT_FIELDS.includes(key))
36
+ );
27
37
 
28
38
  return this.request({
29
39
  method: 'GET',
30
40
  route,
31
41
  params,
42
+ ...this.getBaseSettings(options),
32
43
  });
33
44
  }
34
45
 
46
+ /**
47
+ * @description Get Events of multiple HitL Sessions
48
+ * @param options
49
+ */
50
+ public static async getBulkSessionEventsList(
51
+ options: GetBulkSessionEventsOptions
52
+ ): Promise<GetBulkSessionsEventsResponse> {
53
+ const baseUrl = this.getBaseUrl(options);
54
+ const route = new URI(baseUrl).segment(this.GET_BULK_EVENTS_URL).href();
55
+ const params = Object.fromEntries(
56
+ Object.entries(options).filter(([key]) => !DEFAULT_OMIT_FIELDS.includes(key))
57
+ );
58
+
59
+ return this.request({
60
+ method: 'GET',
61
+ route,
62
+ params,
63
+ ...this.getBaseSettings(options),
64
+ });
65
+ }
66
+
67
+ /**
68
+ * @description Add new Events to HitL Session
69
+ * @param options
70
+ */
35
71
  public static addEvents(
36
- options: AddEventsOptions
72
+ { sessionId, events, ...options }: AddEventsOptions
37
73
  ): Promise<AddEventsResponse> {
38
74
  const route = this.getBaseUrl(options);
39
- const params = _.pick(options, ['sessionId']);
40
- const data = _.pick(options, ['events']);
41
75
 
42
76
  return this.request({
43
77
  method: 'POST',
44
78
  route,
45
- params,
46
- data,
79
+ params: { sessionId },
80
+ data: { events },
81
+ ...this.getBaseSettings(options),
47
82
  });
48
83
  }
49
84
 
85
+ /**
86
+ * @description Get unread Events count for an Agent
87
+ * @param options
88
+ */
50
89
  public static async getNewEventsCount(
51
- options: GetNewEventsCountOptions
90
+ // TODO: add userId to GetNewEventsCountOptions
91
+ { userId, ...options }: GetNewEventsCountOptions & { userId: string; }
52
92
  ): Promise<GetNewEventsCountResponse> {
53
93
  const baseUrl = this.getBaseUrl(options);
54
94
  const route = new URI(baseUrl).segment(this.GET_EVENTS_COUNT_URL).href();
55
- const params = _.pick(options, ['userId']);
56
- const data = _.omit(options, ['userId', 'version']);
95
+ const data = Object.fromEntries(
96
+ Object.entries(options).filter(([key]) => !DEFAULT_OMIT_FIELDS.includes(key))
97
+ );
57
98
 
58
99
  return this.request({
59
100
  method: 'POST',
60
101
  route,
61
- params,
102
+ params: { userId },
62
103
  data,
104
+ ...this.getBaseSettings(options),
63
105
  });
64
106
  }
65
107
 
108
+ /**
109
+ * @description Save last read Event info (event id and timestamp) for a Agent and HitL Session
110
+ * @param options
111
+ */
66
112
  public static async saveReadEventByUserId(
67
- options: SaveLastReadEventOptions
113
+ // TODO: add userId to SaveLastReadEventOptions
114
+ { userId, ...options }: SaveLastReadEventOptions & { userId: string; }
68
115
  ): Promise<void> {
69
116
  const baseUrl = this.getBaseUrl(options);
70
117
  const route = new URI(baseUrl).segment(this.SAVE_READ_EVENT_URL).href();
71
- const params = _.pick(options, ['userId']);
72
- const data = _.omit(options, ['userId', 'version']);
118
+ const data = Object.fromEntries(
119
+ Object.entries(options).filter(([key]) => !DEFAULT_OMIT_FIELDS.includes(key))
120
+ );
73
121
 
74
122
  return this.request({
75
123
  method: 'POST',
76
124
  route,
77
- params,
125
+ params: { userId },
78
126
  data,
127
+ ...this.getBaseSettings(options),
79
128
  });
80
129
  }
81
130
  }
@@ -1,6 +1,4 @@
1
- import _ from 'lodash';
2
-
3
- import { HITLBase } from './HITLBase';
1
+ import { DEFAULT_OMIT_FIELDS } from '../constants';
4
2
  import {
5
3
  GetSessionRelationsOptions,
6
4
  GetSessionRelationsResponse,
@@ -9,44 +7,69 @@ import {
9
7
  DeleteSessionRelationsOptions,
10
8
  } from '../types/session-relations';
11
9
 
10
+ import { HITLBase } from './HITLBase';
11
+
12
12
  export class SessionRelations extends HITLBase {
13
13
  protected static MODULE_URL = 'session-relations';
14
14
 
15
+ /**
16
+ * @description Get a list of HitL Session Relations
17
+ * @param options
18
+ */
15
19
  public static getSessionRelations(
16
20
  options: GetSessionRelationsOptions
17
21
  ): Promise<GetSessionRelationsResponse> {
18
22
  const route = this.getBaseUrl(options);
19
- const params = _.omit(options, ['version']);
23
+ const params = Object.fromEntries(
24
+ Object.entries(options).filter(([key]) => !DEFAULT_OMIT_FIELDS.includes(key))
25
+ );
20
26
 
21
27
  return this.request({
22
28
  method: 'GET',
23
29
  route,
24
30
  params,
31
+ ...this.getBaseSettings(options),
25
32
  });
26
33
  }
27
34
 
28
- public static createSessionRelations(options: CreateSessionRelationsOptions): Promise<CreateSessionRelationsResponse> {
35
+ /**
36
+ * @description Create HitL Session Relations
37
+ * @param options
38
+ */
39
+
40
+ public static createSessionRelations(
41
+ options: CreateSessionRelationsOptions,
42
+ ): Promise<CreateSessionRelationsResponse> {
29
43
  const route = this.getBaseUrl(options);
30
- const data = _.omit(options, ['version']);
44
+ const data = Object.fromEntries(
45
+ Object.entries(options).filter(([key]) => !DEFAULT_OMIT_FIELDS.includes(key))
46
+ );
31
47
 
32
48
  return this.request({
33
49
  method: 'POST',
34
50
  route,
35
51
  data,
52
+ ...this.getBaseSettings(options),
36
53
  });
37
54
  }
38
55
 
39
-
56
+ /**
57
+ * @description Delete HitL Session Relations
58
+ * @param options
59
+ */
40
60
  public static deleteSessionRelations(
41
61
  options: DeleteSessionRelationsOptions
42
62
  ) {
43
63
  const route = this.getBaseUrl(options);
44
- const data = _.omit(options, ['version']);
64
+ const data = Object.fromEntries(
65
+ Object.entries(options).filter(([key]) => !DEFAULT_OMIT_FIELDS.includes(key))
66
+ );
45
67
 
46
68
  return this.request({
47
69
  method: 'DELETE',
48
70
  route,
49
71
  data,
72
+ ...this.getBaseSettings(options),
50
73
  });
51
74
  }
52
75
  }