@webitel/api-services 1.0.10 → 1.0.11

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 (100) hide show
  1. package/package.json +1 -1
  2. package/src/api/clients/__tests__/wireParamsCoverage.spec.ts +286 -0
  3. package/src/api/clients/activeCalls/activeCalls.ts +72 -0
  4. package/src/api/clients/agentPauseCauses/agentPauseCauses.ts +182 -0
  5. package/src/api/clients/agentSkills/agentSkills.ts +193 -0
  6. package/src/api/clients/agents/__tests__/agents.wireParams.spec.ts +51 -0
  7. package/src/api/clients/agents/agents.ts +203 -18
  8. package/src/api/clients/auditForms/auditForms.ts +6 -2
  9. package/src/api/clients/auditForms/auditRates.ts +91 -0
  10. package/src/api/clients/backendProfiles/backendProfiles.ts +194 -0
  11. package/src/api/clients/buckets/buckets.ts +21 -25
  12. package/src/api/clients/callHistory/callAnnotations.ts +91 -0
  13. package/src/api/clients/callHistory/callHistory.ts +76 -7
  14. package/src/api/clients/casePriorities/__tests__/casePriorities.spec.ts +50 -0
  15. package/src/api/clients/casePriorities/casePriorities.ts +25 -41
  16. package/src/api/clients/caseStatusConditions/caseStatusConditions.ts +19 -29
  17. package/src/api/clients/caseStatuses/caseStatuses.ts +10 -21
  18. package/src/api/clients/catalog/catalog.ts +2 -8
  19. package/src/api/clients/changelogs/changelogs.ts +8 -0
  20. package/src/api/clients/chatplans/chatplans.ts +173 -0
  21. package/src/api/clients/cognitiveProfiles/cognitiveProfiles.ts +209 -0
  22. package/src/api/clients/communications/communications.ts +38 -42
  23. package/src/api/clients/dialplans/dialplans.ts +197 -0
  24. package/src/api/clients/emailProfiles/emailProfiles.ts +222 -0
  25. package/src/api/clients/fileServices/fileServices.ts +7 -2
  26. package/src/api/clients/flows/flow.ts +54 -43
  27. package/src/api/clients/fts/fts.ts +61 -0
  28. package/src/api/clients/history/transcript/callTranscript.ts +10 -20
  29. package/src/api/clients/importTemplates/importTemplates.ts +180 -0
  30. package/src/api/clients/index.ts +30 -0
  31. package/src/api/clients/lists/blacklistNumbers.ts +155 -0
  32. package/src/api/clients/lists/blacklists.ts +20 -25
  33. package/src/api/clients/logs/logs.ts +157 -0
  34. package/src/api/clients/media/media.ts +19 -15
  35. package/src/api/clients/object/object.ts +3 -14
  36. package/src/api/clients/outboundResourceGroups/outboundResourceGroups.ts +187 -0
  37. package/src/api/clients/outboundResourceGroups/resourcesInGroup.ts +169 -0
  38. package/src/api/clients/outboundResources/outboundResources.ts +225 -0
  39. package/src/api/clients/outboundResources/resourceDisplays.ts +165 -0
  40. package/src/api/clients/pauseTemplates/pauseTemplates.ts +203 -0
  41. package/src/api/clients/queues/__tests__/queueLogs.spec.ts +3 -3
  42. package/src/api/clients/queues/__tests__/queueMembers.spec.ts +4 -4
  43. package/src/api/clients/queues/queueLogs.ts +8 -3
  44. package/src/api/clients/queues/queueMembers.ts +3 -3
  45. package/src/api/clients/queues/queues.ts +52 -0
  46. package/src/api/clients/regions/regions.ts +21 -25
  47. package/src/api/clients/schemaVariables/schemaVariables.ts +167 -0
  48. package/src/api/clients/shiftTemplates/shiftTemplates.ts +176 -0
  49. package/src/api/clients/skills/skillAgents.ts +190 -0
  50. package/src/api/clients/skills/skills.ts +21 -25
  51. package/src/api/clients/storagePolicies/storagePolicies.ts +270 -0
  52. package/src/api/clients/teamHooks/teamHooks.ts +195 -0
  53. package/src/api/clients/teamTriggers/agentTriggers.ts +77 -0
  54. package/src/api/clients/teamTriggers/teamFlows.ts +194 -0
  55. package/src/api/clients/teams/teams.ts +31 -31
  56. package/src/api/clients/triggers/triggerJobs.ts +63 -0
  57. package/src/api/clients/triggers/triggers.ts +266 -0
  58. package/src/api/clients/userSettings/userSettings.ts +8 -9
  59. package/src/api/clients/users/users.ts +2 -0
  60. package/src/api/clients/workingConditions/workingConditions.ts +184 -0
  61. package/src/api/clients/workspaceWidgets/workspaceWidgets.ts +73 -0
  62. package/src/api/clients//321/201ontacts/contactChatMessagesHistory.ts +15 -26
  63. package/types/.tsbuildinfo +1 -1
  64. package/types/api/clients/activeCalls/activeCalls.d.ts +7 -0
  65. package/types/api/clients/agentPauseCauses/agentPauseCauses.d.ts +21 -0
  66. package/types/api/clients/agentSkills/agentSkills.d.ts +12 -0
  67. package/types/api/clients/agents/agents.d.ts +23 -2
  68. package/types/api/clients/auditForms/auditForms.d.ts +7 -0
  69. package/types/api/clients/auditForms/auditRates.d.ts +10 -0
  70. package/types/api/clients/backendProfiles/backendProfiles.d.ts +21 -0
  71. package/types/api/clients/callHistory/callAnnotations.d.ts +12 -0
  72. package/types/api/clients/callHistory/callHistory.d.ts +24 -3
  73. package/types/api/clients/chatplans/chatplans.d.ts +21 -0
  74. package/types/api/clients/cognitiveProfiles/cognitiveProfiles.d.ts +21 -0
  75. package/types/api/clients/dialplans/dialplans.d.ts +16 -0
  76. package/types/api/clients/emailProfiles/emailProfiles.d.ts +27 -0
  77. package/types/api/clients/fileServices/fileServices.d.ts +1 -1
  78. package/types/api/clients/fts/fts.d.ts +7 -0
  79. package/types/api/clients/importTemplates/importTemplates.d.ts +21 -0
  80. package/types/api/clients/index.d.ts +30 -0
  81. package/types/api/clients/lists/blacklistNumbers.d.ts +11 -0
  82. package/types/api/clients/logs/logs.d.ts +15 -0
  83. package/types/api/clients/outboundResourceGroups/outboundResourceGroups.d.ts +20 -0
  84. package/types/api/clients/outboundResourceGroups/resourcesInGroup.d.ts +11 -0
  85. package/types/api/clients/outboundResources/outboundResources.d.ts +21 -0
  86. package/types/api/clients/outboundResources/resourceDisplays.d.ts +11 -0
  87. package/types/api/clients/pauseTemplates/pauseTemplates.d.ts +20 -0
  88. package/types/api/clients/queues/queues.d.ts +5 -0
  89. package/types/api/clients/schemaVariables/schemaVariables.d.ts +21 -0
  90. package/types/api/clients/shiftTemplates/shiftTemplates.d.ts +20 -0
  91. package/types/api/clients/skills/skillAgents.d.ts +13 -0
  92. package/types/api/clients/storagePolicies/storagePolicies.d.ts +26 -0
  93. package/types/api/clients/teamHooks/teamHooks.d.ts +12 -0
  94. package/types/api/clients/teamTriggers/agentTriggers.d.ts +23 -0
  95. package/types/api/clients/teamTriggers/teamFlows.d.ts +12 -0
  96. package/types/api/clients/triggers/triggerJobs.d.ts +7 -0
  97. package/types/api/clients/triggers/triggers.d.ts +22 -0
  98. package/types/api/clients/userSettings/userSettings.d.ts +2 -2
  99. package/types/api/clients/workingConditions/workingConditions.d.ts +20 -0
  100. package/types/api/clients/workspaceWidgets/workspaceWidgets.d.ts +3 -0
@@ -0,0 +1,157 @@
1
+ import { getLoggerService } from '../../../gen-wire';
2
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
3
+ import {
4
+ applyTransform,
5
+ merge,
6
+ notify,
7
+ sanitize,
8
+ snakeToCamel,
9
+ starToSearch,
10
+ } from '../../transformers';
11
+ import type { ApiParams } from '../_shared/types';
12
+
13
+ /**
14
+ * The logger endpoints have no natural ordering, so both lists default to
15
+ * newest first.
16
+ */
17
+ const DEFAULT_SORT = '-date';
18
+
19
+ const getLogsByUserList = async (params: ApiParams) => {
20
+ const fieldsToSend = [
21
+ 'parentId',
22
+ 'page',
23
+ 'size',
24
+ 'search',
25
+ 'sort',
26
+ 'fields',
27
+ 'action',
28
+ 'object',
29
+ 'from',
30
+ 'to',
31
+ 'userIp',
32
+ ];
33
+
34
+ const {
35
+ parentId,
36
+ page,
37
+ size,
38
+ search,
39
+ sort,
40
+ fields,
41
+ action,
42
+ object,
43
+ from,
44
+ to,
45
+ userIp,
46
+ } = applyTransform(params, [
47
+ sanitize(fieldsToSend),
48
+ merge(getDefaultGetParams()),
49
+ starToSearch('search'),
50
+ ]);
51
+
52
+ try {
53
+ const response = await getLoggerService().loggerServiceSearchLogByUserId(
54
+ Number(parentId),
55
+ {
56
+ page,
57
+ size,
58
+ // the generated param is `q`; `search` is what the datalist store sends
59
+ q: search,
60
+ sort: sort || DEFAULT_SORT,
61
+ fields,
62
+ object_id: object,
63
+ action,
64
+ user_ip: userIp,
65
+ date_from: from,
66
+ date_to: to,
67
+ },
68
+ );
69
+ const { items, next } = applyTransform(response.data, [
70
+ snakeToCamel(),
71
+ merge(getDefaultGetListResponse()),
72
+ ]);
73
+ return {
74
+ items,
75
+ next,
76
+ };
77
+ } catch (err) {
78
+ throw applyTransform(err, [
79
+ notify,
80
+ ]);
81
+ }
82
+ };
83
+
84
+ const getLogsByConfigList = async (params: ApiParams) => {
85
+ const fieldsToSend = [
86
+ 'parentId',
87
+ 'page',
88
+ 'size',
89
+ 'search',
90
+ 'sort',
91
+ 'fields',
92
+ 'action',
93
+ 'user',
94
+ 'from',
95
+ 'to',
96
+ 'userIp',
97
+ ];
98
+
99
+ const {
100
+ parentId,
101
+ page,
102
+ size,
103
+ search,
104
+ sort,
105
+ fields,
106
+ action,
107
+ user,
108
+ from,
109
+ to,
110
+ userIp,
111
+ } = applyTransform(params, [
112
+ sanitize(fieldsToSend),
113
+ merge(getDefaultGetParams()),
114
+ starToSearch('search'),
115
+ ]);
116
+
117
+ try {
118
+ const response = await getLoggerService().loggerServiceSearchLogByConfigId(
119
+ Number(parentId),
120
+ {
121
+ page,
122
+ size,
123
+ // the generated param is `q`; `search` is what the datalist store sends
124
+ q: search,
125
+ sort: sort || DEFAULT_SORT,
126
+ fields,
127
+ user_id: user,
128
+ action,
129
+ user_ip: userIp,
130
+ date_from: from,
131
+ date_to: to,
132
+ },
133
+ );
134
+ const { items, next } = applyTransform(response.data, [
135
+ snakeToCamel(),
136
+ merge(getDefaultGetListResponse()),
137
+ ]);
138
+ return {
139
+ items,
140
+ next,
141
+ };
142
+ } catch (err) {
143
+ throw applyTransform(err, [
144
+ notify,
145
+ ]);
146
+ }
147
+ };
148
+
149
+ /** Audit log of everything one user did. */
150
+ export const UserLogsAPI = {
151
+ getList: getLogsByUserList,
152
+ };
153
+
154
+ /** Audit log of everything done to one logger config's object. */
155
+ export const ConfigLogsAPI = {
156
+ getList: getLogsByConfigList,
157
+ };
@@ -1,15 +1,16 @@
1
1
  import axios from 'axios';
2
- import { MediaFileServiceApiFactory } from 'webitel-sdk';
2
+ import { getMediaFileService } from '../../../gen-wire';
3
3
  import {
4
4
  getDefaultGetListResponse,
5
5
  getDefaultGetParams,
6
6
  getDefaultInstance,
7
- getDefaultOpenAPIConfig,
8
7
  } from '../../defaults';
9
8
  import {
10
9
  applyTransform,
10
+ camelToSnake,
11
11
  merge,
12
12
  notify,
13
+ sanitize,
13
14
  snakeToCamel,
14
15
  starToSearch,
15
16
  } from '../../transformers';
@@ -21,28 +22,31 @@ import type {
21
22
  } from '../_shared/types';
22
23
 
23
24
  const instance = getDefaultInstance();
24
- const configuration = getDefaultOpenAPIConfig();
25
-
26
- const mediaService = MediaFileServiceApiFactory(configuration, '', instance);
27
25
 
28
26
  const token = localStorage.getItem('access-token');
29
27
  const baseUrl = import.meta.env.VITE_API_URL;
30
28
 
31
29
  const getMediaList = async (params: ApiParams) => {
32
- const { page, size, search, sort, fields, id } = applyTransform(params, [
30
+ const requestParams = applyTransform(params, [
33
31
  merge(getDefaultGetParams()),
34
32
  starToSearch('search'),
33
+ camelToSnake(),
34
+ (params) => ({
35
+ ...params,
36
+ q: params.search,
37
+ }),
38
+ sanitize([
39
+ 'page',
40
+ 'size',
41
+ 'q',
42
+ 'sort',
43
+ 'fields',
44
+ 'id',
45
+ ]),
35
46
  ]);
36
47
 
37
48
  try {
38
- const response = await mediaService.searchMediaFile(
39
- page,
40
- size,
41
- search,
42
- sort,
43
- fields,
44
- id,
45
- );
49
+ const response = await getMediaFileService().searchMediaFile(requestParams);
46
50
  const { items, next } = applyTransform(response.data, [
47
51
  snakeToCamel(),
48
52
  merge(getDefaultGetListResponse()),
@@ -137,7 +141,7 @@ const addMedia = async (params: ApiParams) => {
137
141
 
138
142
  const deleteMedia = async ({ id }: DeleteItemParams) => {
139
143
  try {
140
- const response = await mediaService.deleteMediaFile(String(id));
144
+ const response = await getMediaFileService().deleteMediaFile(String(id));
141
145
  return applyTransform(response.data, []);
142
146
  } catch (err) {
143
147
  throw applyTransform(err, [
@@ -1,9 +1,8 @@
1
- import { TypesApiFactory } from 'webitel-sdk';
1
+ import { getTypes } from '../../../gen-wire';
2
2
  import {
3
3
  getDefaultGetListResponse,
4
4
  getDefaultGetParams,
5
5
  getDefaultInstance,
6
- getDefaultOpenAPIConfig,
7
6
  } from '../../defaults';
8
7
  import {
9
8
  applyTransform,
@@ -18,9 +17,6 @@ import {
18
17
  import type { ApiParams } from '../_shared/types';
19
18
 
20
19
  const instance = getDefaultInstance();
21
- const configuration = getDefaultOpenAPIConfig();
22
-
23
- const typeService = TypesApiFactory(configuration, '', instance);
24
20
 
25
21
  const getObjectList = async (params: ApiParams) => {
26
22
  const fieldsToSend = [
@@ -43,21 +39,14 @@ const getObjectList = async (params: ApiParams) => {
43
39
  camelToSnake(),
44
40
  ]);
45
41
  try {
46
- const response = await typeService.search(
42
+ const response = await getTypes().searchTypes({
47
43
  q,
48
44
  id,
49
- undefined,
50
- undefined,
51
- undefined,
52
- undefined,
53
- undefined,
54
- undefined,
55
- undefined,
56
45
  size,
57
46
  page,
58
47
  sort,
59
48
  fields,
60
- );
49
+ });
61
50
  const { data, next } = applyTransform(response.data, [
62
51
  merge(getDefaultGetListResponse()),
63
52
  ]);
@@ -0,0 +1,187 @@
1
+ import deepCopy from 'deep-copy';
2
+ import { getOutboundResourceGroupService } from '../../../gen-wire';
3
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
4
+ import {
5
+ applyTransform,
6
+ camelToSnake,
7
+ merge,
8
+ notify,
9
+ sanitize,
10
+ snakeToCamel,
11
+ starToSearch,
12
+ } from '../../transformers';
13
+ import type {
14
+ AddItemParams,
15
+ ApiParams,
16
+ DeleteItemParams,
17
+ GetItemParams,
18
+ UpdateItemParams,
19
+ } from '../_shared/types';
20
+
21
+ const fieldsToSend = [
22
+ 'name',
23
+ 'description',
24
+ 'strategy',
25
+ 'communication',
26
+ 'time',
27
+ ];
28
+
29
+ /*
30
+ * The form models a time range as `{ start, end }`, the API as
31
+ * `{ startTimeOfDay, endTimeOfDay }`. `getResourceGroup` maps them back.
32
+ */
33
+ const preRequestHandler = (item: ApiParams) => {
34
+ const copy = deepCopy(item);
35
+ copy.time = copy.time.map((range: ApiParams) => ({
36
+ startTimeOfDay: range.start,
37
+ endTimeOfDay: range.end,
38
+ }));
39
+ return copy;
40
+ };
41
+
42
+ const getResourceGroupsList = async (params: ApiParams) => {
43
+ const { page, size, search, sort, fields, id } = applyTransform(params, [
44
+ merge(getDefaultGetParams()),
45
+ starToSearch('search'),
46
+ ]);
47
+
48
+ try {
49
+ const response =
50
+ await getOutboundResourceGroupService().searchOutboundResourceGroup({
51
+ page,
52
+ size,
53
+ // the generated param is `q`; `search` is what the datalist store sends
54
+ q: search,
55
+ sort,
56
+ fields,
57
+ id,
58
+ });
59
+ const { items, next } = applyTransform(response.data, [
60
+ snakeToCamel(),
61
+ merge(getDefaultGetListResponse()),
62
+ ]);
63
+ return {
64
+ items,
65
+ next,
66
+ };
67
+ } catch (err) {
68
+ throw applyTransform(err, [
69
+ notify,
70
+ ]);
71
+ }
72
+ };
73
+
74
+ const getResourceGroup = async ({ itemId: id }: GetItemParams) => {
75
+ const defaultObject = {
76
+ name: '',
77
+ strategy: '',
78
+ description: '',
79
+ communication: {},
80
+ time: [],
81
+ };
82
+
83
+ const responseHandler = (response: ApiParams) => {
84
+ const time = response.time.map((range: ApiParams) => ({
85
+ start: range.startTimeOfDay || 0,
86
+ end: range.endTimeOfDay || 0,
87
+ }));
88
+ return {
89
+ ...response,
90
+ time,
91
+ };
92
+ };
93
+
94
+ try {
95
+ const response =
96
+ await getOutboundResourceGroupService().readOutboundResourceGroup(
97
+ String(id),
98
+ );
99
+ return applyTransform(response.data, [
100
+ snakeToCamel(),
101
+ merge(defaultObject),
102
+ responseHandler,
103
+ ]);
104
+ } catch (err) {
105
+ throw applyTransform(err, [
106
+ notify,
107
+ ]);
108
+ }
109
+ };
110
+
111
+ const addResourceGroup = async ({ itemInstance }: AddItemParams) => {
112
+ const item = applyTransform(itemInstance, [
113
+ preRequestHandler,
114
+ sanitize(fieldsToSend),
115
+ camelToSnake(),
116
+ ]);
117
+ try {
118
+ const response =
119
+ await getOutboundResourceGroupService().createOutboundResourceGroup(item);
120
+ return applyTransform(response.data, [
121
+ snakeToCamel(),
122
+ ]);
123
+ } catch (err) {
124
+ throw applyTransform(err, [
125
+ notify,
126
+ ]);
127
+ }
128
+ };
129
+
130
+ const updateResourceGroup = async ({
131
+ itemInstance,
132
+ itemId: id,
133
+ }: UpdateItemParams) => {
134
+ const item = applyTransform(itemInstance, [
135
+ preRequestHandler,
136
+ sanitize(fieldsToSend),
137
+ camelToSnake(),
138
+ ]);
139
+ try {
140
+ const response =
141
+ await getOutboundResourceGroupService().updateOutboundResourceGroup(
142
+ String(id),
143
+ item,
144
+ );
145
+ return applyTransform(response.data, [
146
+ snakeToCamel(),
147
+ ]);
148
+ } catch (err) {
149
+ throw applyTransform(err, [
150
+ notify,
151
+ ]);
152
+ }
153
+ };
154
+
155
+ const deleteResourceGroup = async ({ id }: DeleteItemParams) => {
156
+ try {
157
+ const response =
158
+ await getOutboundResourceGroupService().deleteOutboundResourceGroup(
159
+ String(id),
160
+ );
161
+ return applyTransform(response.data, []);
162
+ } catch (err) {
163
+ throw applyTransform(err, [
164
+ notify,
165
+ ]);
166
+ }
167
+ };
168
+
169
+ const getResourceGroupsLookup = (
170
+ params: Parameters<typeof getResourceGroupsList>[0],
171
+ ) =>
172
+ getResourceGroupsList({
173
+ ...params,
174
+ fields: params.fields || [
175
+ 'id',
176
+ 'name',
177
+ ],
178
+ });
179
+
180
+ export const OutboundResourceGroupsAPI = {
181
+ getList: getResourceGroupsList,
182
+ get: getResourceGroup,
183
+ add: addResourceGroup,
184
+ update: updateResourceGroup,
185
+ delete: deleteResourceGroup,
186
+ getLookup: getResourceGroupsLookup,
187
+ };
@@ -0,0 +1,169 @@
1
+ import { getOutboundResourceGroupService } from '../../../gen-wire';
2
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
3
+ import {
4
+ applyTransform,
5
+ camelToSnake,
6
+ merge,
7
+ notify,
8
+ sanitize,
9
+ snakeToCamel,
10
+ starToSearch,
11
+ } from '../../transformers';
12
+ import type {
13
+ ApiId,
14
+ ApiParams,
15
+ NestedAddItemParams,
16
+ NestedDeleteItemParams,
17
+ NestedGetItemParams,
18
+ NestedUpdateItemParams,
19
+ } from '../_shared/types';
20
+
21
+ const fieldsToSend = [
22
+ 'groupId',
23
+ 'name',
24
+ 'description',
25
+ 'resource',
26
+ 'reserveResource',
27
+ 'priority',
28
+ ];
29
+
30
+ const preRequestHandler = (parentId: ApiId) => (item: ApiParams) => ({
31
+ ...item,
32
+ groupId: parentId,
33
+ });
34
+
35
+ const getResourcesInGroupList = async (params: ApiParams) => {
36
+ const { page, size, search, sort, fields, id, parentId } = applyTransform(
37
+ params,
38
+ [
39
+ merge(getDefaultGetParams()),
40
+ starToSearch('search'),
41
+ ],
42
+ );
43
+
44
+ try {
45
+ const response =
46
+ await getOutboundResourceGroupService().searchOutboundResourceInGroup(
47
+ String(parentId),
48
+ {
49
+ page,
50
+ size,
51
+ // the generated param is `q`; `search` is what the datalist store sends
52
+ q: search,
53
+ sort,
54
+ fields,
55
+ id,
56
+ },
57
+ );
58
+ const { items, next } = applyTransform(response.data, [
59
+ snakeToCamel(),
60
+ merge(getDefaultGetListResponse()),
61
+ ]);
62
+ return {
63
+ items,
64
+ next,
65
+ };
66
+ } catch (err) {
67
+ throw applyTransform(err, [
68
+ notify,
69
+ ]);
70
+ }
71
+ };
72
+
73
+ const getResourceInGroup = async ({
74
+ parentId,
75
+ itemId: id,
76
+ }: NestedGetItemParams) => {
77
+ try {
78
+ const response =
79
+ await getOutboundResourceGroupService().readOutboundResourceInGroup(
80
+ String(parentId),
81
+ String(id),
82
+ );
83
+ return applyTransform(response.data, [
84
+ snakeToCamel(),
85
+ ]);
86
+ } catch (err) {
87
+ throw applyTransform(err, [
88
+ notify,
89
+ ]);
90
+ }
91
+ };
92
+
93
+ const addResourceInGroup = async ({
94
+ parentId,
95
+ itemInstance,
96
+ }: NestedAddItemParams) => {
97
+ const item = applyTransform(itemInstance, [
98
+ preRequestHandler(parentId),
99
+ sanitize(fieldsToSend),
100
+ camelToSnake(),
101
+ ]);
102
+ try {
103
+ const response =
104
+ await getOutboundResourceGroupService().createOutboundResourceInGroup(
105
+ String(parentId),
106
+ item,
107
+ );
108
+ return applyTransform(response.data, [
109
+ snakeToCamel(),
110
+ ]);
111
+ } catch (err) {
112
+ throw applyTransform(err, [
113
+ notify,
114
+ ]);
115
+ }
116
+ };
117
+
118
+ const updateResourceInGroup = async ({
119
+ parentId,
120
+ itemInstance,
121
+ itemId: id,
122
+ }: NestedUpdateItemParams) => {
123
+ const item = applyTransform(itemInstance, [
124
+ preRequestHandler(parentId),
125
+ sanitize(fieldsToSend),
126
+ camelToSnake(),
127
+ ]);
128
+ try {
129
+ const response =
130
+ await getOutboundResourceGroupService().updateOutboundResourceInGroup(
131
+ String(parentId),
132
+ String(id),
133
+ item,
134
+ );
135
+ return applyTransform(response.data, [
136
+ snakeToCamel(),
137
+ ]);
138
+ } catch (err) {
139
+ throw applyTransform(err, [
140
+ notify,
141
+ ]);
142
+ }
143
+ };
144
+
145
+ const deleteResourceInGroup = async ({
146
+ parentId,
147
+ id,
148
+ }: NestedDeleteItemParams) => {
149
+ try {
150
+ const response =
151
+ await getOutboundResourceGroupService().deleteOutboundResourceInGroup(
152
+ String(parentId),
153
+ String(id),
154
+ );
155
+ return applyTransform(response.data, []);
156
+ } catch (err) {
157
+ throw applyTransform(err, [
158
+ notify,
159
+ ]);
160
+ }
161
+ };
162
+
163
+ export const ResourcesInGroupAPI = {
164
+ getList: getResourcesInGroupList,
165
+ get: getResourceInGroup,
166
+ add: addResourceInGroup,
167
+ update: updateResourceInGroup,
168
+ delete: deleteResourceInGroup,
169
+ };