@webitel/api-services 0.1.68 → 0.1.69

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webitel/api-services",
3
- "version": "0.1.68",
3
+ "version": "0.1.69",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,10 +1,12 @@
1
- import { CatalogsApiFactory } from 'webitel-sdk';
2
1
  import {
3
- getDefaultGetListResponse,
4
- getDefaultGetParams,
5
- getDefaultInstance,
6
- getDefaultOpenAPIConfig,
7
- } from '../../defaults';
2
+ CreateCatalogBody,
3
+ getCatalogs,
4
+ ListCatalogsQueryParams,
5
+ UpdateCatalogBody,
6
+ } from '@webitel/api-services/gen';
7
+ import { getShallowFieldsToSendFromZodSchema } from '@webitel/api-services/gen/utils';
8
+
9
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
8
10
  import {
9
11
  applyTransform,
10
12
  camelToSnake,
@@ -22,11 +24,6 @@ import type {
22
24
  UpdateItemParams,
23
25
  } from '../_shared/types';
24
26
 
25
- const instance = getDefaultInstance();
26
- const configuration = getDefaultOpenAPIConfig();
27
-
28
- const catalogsService = CatalogsApiFactory(configuration, '', instance);
29
-
30
27
  const fieldsToSend = [
31
28
  'id',
32
29
  'name',
@@ -60,44 +57,38 @@ const servicesFieldsToSend = [
60
57
  ];
61
58
 
62
59
  const getCatalogsList = async (params: ApiParams) => {
63
- const fieldsToSend = [
64
- 'page',
65
- 'size',
66
- 'q',
67
- 'sort',
68
- 'fields',
69
- 'id',
70
- 'state',
71
- 'hasSubservices',
72
- ];
60
+ const fieldsToSend = getShallowFieldsToSendFromZodSchema(
61
+ ListCatalogsQueryParams,
62
+ );
73
63
 
74
- const { page, size, fields, sort, id, q, state, has_subservices } =
64
+ const { page, size, fields, sort, id, query, state, has_subservices } =
75
65
  applyTransform(params, [
76
66
  merge(getDefaultGetParams()),
77
67
  starToSearch('search'),
78
68
  (params) => ({
79
69
  ...params,
80
- q: params.search,
70
+ query: params.search,
81
71
  }),
82
72
  sanitize(fieldsToSend),
83
73
  camelToSnake(),
84
74
  ]);
75
+
85
76
  try {
86
- const response = await catalogsService.listCatalogs(
77
+ const response = await getCatalogs().listCatalogs({
87
78
  page,
88
79
  size,
89
- [
80
+ fields: [
90
81
  ...fields,
91
82
  'services',
92
83
  ],
93
84
  sort,
94
85
  id,
95
- q,
86
+ query,
96
87
  state,
97
- '100', // Implemented depth 100 for load all subservices in one request
98
- servicesFieldsToSend,
99
- has_subservices,
100
- );
88
+ depth: '100', // Implemented depth 100 for load all subservices in one request
89
+ subFields: servicesFieldsToSend,
90
+ hasSubservices: has_subservices,
91
+ });
101
92
  const { items, next } = applyTransform(response.data, [
102
93
  merge(getDefaultGetListResponse()),
103
94
  ]);
@@ -115,16 +106,13 @@ const getCatalogsList = async (params: ApiParams) => {
115
106
  };
116
107
 
117
108
  const getCatalog = async ({ itemId: id }: GetItemParams) => {
118
- const itemResponseHandler = (item: ApiParams) => {
119
- return item.catalog;
120
- };
109
+ const itemResponseHandler = (item: ApiParams) => item.catalog;
121
110
 
122
111
  try {
123
- const response = await catalogsService.locateCatalog(
124
- String(id),
125
- fieldsToSend,
126
- servicesFieldsToSend,
127
- );
112
+ const response = await getCatalogs().locateCatalog(String(id), {
113
+ fields: fieldsToSend,
114
+ subFields: servicesFieldsToSend,
115
+ });
128
116
  return applyTransform(response.data, [
129
117
  snakeToCamel(),
130
118
  itemResponseHandler,
@@ -137,25 +125,14 @@ const getCatalog = async ({ itemId: id }: GetItemParams) => {
137
125
  };
138
126
 
139
127
  const addCatalog = async ({ itemInstance }: AddItemParams) => {
140
- const fieldsToSend = [
141
- 'name',
142
- 'description',
143
- 'prefix',
144
- 'code',
145
- 'state',
146
- 'sla',
147
- 'status',
148
- 'close_reason_group',
149
- 'default_priority',
150
- 'teams',
151
- 'skills',
152
- ];
128
+ const fieldsToSend = getShallowFieldsToSendFromZodSchema(CreateCatalogBody);
129
+
153
130
  const item = applyTransform(itemInstance, [
154
- camelToSnake(),
155
131
  sanitize(fieldsToSend),
132
+ camelToSnake(),
156
133
  ]);
157
134
  try {
158
- const response = await catalogsService.createCatalog(item);
135
+ const response = await getCatalogs().createCatalog(item);
159
136
  return applyTransform(response.data, [
160
137
  snakeToCamel(),
161
138
  ]);
@@ -170,25 +147,14 @@ const updateCatalog = async ({
170
147
  itemInstance,
171
148
  itemId: id,
172
149
  }: UpdateItemParams) => {
173
- const fieldsToSend = [
174
- 'name',
175
- 'description',
176
- 'prefix',
177
- 'code',
178
- 'state',
179
- 'sla',
180
- 'status',
181
- 'close_reason_group',
182
- 'default_priority',
183
- 'teams',
184
- 'skills',
185
- ];
150
+ const fieldsToSend = getShallowFieldsToSendFromZodSchema(UpdateCatalogBody);
151
+
186
152
  const item = applyTransform(itemInstance, [
187
- camelToSnake(),
188
153
  sanitize(fieldsToSend),
154
+ camelToSnake(),
189
155
  ]);
190
156
  try {
191
- const response = await catalogsService.updateCatalog(String(id), item);
157
+ const response = await getCatalogs().updateCatalog(String(id), item);
192
158
  return applyTransform(response.data, [
193
159
  snakeToCamel(),
194
160
  ]);
@@ -206,11 +172,11 @@ const patchCatalog = async ({ itemInstance, itemId: id }: UpdateItemParams) => {
206
172
  'state',
207
173
  ];
208
174
  const item = applyTransform(itemInstance, [
209
- camelToSnake(),
210
175
  sanitize(fieldsToSend),
176
+ camelToSnake(),
211
177
  ]);
212
178
  try {
213
- const response = await catalogsService.updateCatalog2(String(id), item);
179
+ const response = await getCatalogs().updateCatalog2(String(id), item);
214
180
  return applyTransform(response.data, [
215
181
  snakeToCamel(),
216
182
  ]);
@@ -223,7 +189,7 @@ const patchCatalog = async ({ itemInstance, itemId: id }: UpdateItemParams) => {
223
189
 
224
190
  const deleteCatalog = async ({ id }: DeleteItemParams) => {
225
191
  try {
226
- const response = await catalogsService.deleteCatalog([
192
+ const response = await getCatalogs().deleteCatalog([
227
193
  String(id),
228
194
  ]);
229
195
  return applyTransform(response.data, []);
@@ -1,10 +1,14 @@
1
- import { ServicesApiFactory, WebitelContactsGroupType } from 'webitel-sdk';
2
1
  import {
3
- getDefaultGetListResponse,
4
- getDefaultGetParams,
5
- getDefaultInstance,
6
- getDefaultOpenAPIConfig,
7
- } from '../../defaults';
2
+ CreateServiceBody,
3
+ getServices,
4
+ ListServicesQueryParams,
5
+ UpdateService2Body,
6
+ UpdateServiceBody,
7
+ } from '@webitel/api-services/gen';
8
+ import { ContactsGroupType } from '@webitel/api-services/gen/models';
9
+ import { getShallowFieldsToSendFromZodSchema } from '@webitel/api-services/gen/utils';
10
+
11
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
8
12
  import {
9
13
  applyTransform,
10
14
  camelToSnake,
@@ -22,39 +26,17 @@ import type {
22
26
  PatchItemParams,
23
27
  } from '../_shared/types';
24
28
 
25
- const instance = getDefaultInstance();
26
- const configuration = getDefaultOpenAPIConfig();
27
-
28
- const servicesService = ServicesApiFactory(configuration, '', instance);
29
-
30
- const fieldsToSend = [
31
- 'name',
32
- 'code',
33
- 'sla',
34
- 'status',
35
- 'state',
36
- 'description',
37
- 'group',
38
- 'assignee',
39
- 'services',
40
- 'root_id',
41
- 'catalog_id',
42
- ];
43
-
44
29
  const getServicesList = async ({
30
+ parentId,
45
31
  rootId,
46
32
  ...rest
47
33
  }: {
34
+ parentId?: ApiId;
48
35
  rootId: ApiId;
49
36
  } & ApiParams) => {
50
- const fieldsToSend = [
51
- 'page',
52
- 'size',
53
- 'q',
54
- 'sort',
55
- 'fields',
56
- 'id',
57
- ];
37
+ const fieldsToSend = getShallowFieldsToSendFromZodSchema(
38
+ ListServicesQueryParams,
39
+ );
58
40
 
59
41
  const { page, size, fields, sort, id, q } = applyTransform(rest, [
60
42
  merge(getDefaultGetParams()),
@@ -66,22 +48,24 @@ const getServicesList = async ({
66
48
  sanitize(fieldsToSend),
67
49
  camelToSnake(),
68
50
  ]);
51
+
69
52
  try {
70
- const response = await servicesService.listServices(
53
+ const response = await getServices().listServices({
71
54
  page,
72
55
  size,
56
+ fields,
73
57
  sort,
74
58
  id,
75
59
  q,
76
- String(rootId),
77
- undefined,
78
- fields,
79
- );
60
+ rootId: String(rootId ?? parentId),
61
+ });
80
62
  const { items, next } = applyTransform(response.data, [
81
63
  merge(getDefaultGetListResponse()),
82
64
  ]);
83
65
  return {
84
- items: applyTransform(items, []),
66
+ items: applyTransform(items, [
67
+ snakeToCamel(),
68
+ ]),
85
69
  next,
86
70
  };
87
71
  } catch (err) {
@@ -101,19 +85,17 @@ const getService = async ({ itemId: id }: GetItemParams) => {
101
85
  'group',
102
86
  'assignee',
103
87
  'description',
88
+ 'default_priority',
104
89
  'catalog_id',
105
90
  'root_id',
106
91
  ];
107
92
 
108
- const itemResponseHandler = (item: ApiParams) => {
109
- return item.service;
110
- };
93
+ const itemResponseHandler = (item: ApiParams) => item.service;
111
94
 
112
95
  try {
113
- const response = await servicesService.locateService(
114
- String(id),
115
- fieldsToSend,
116
- );
96
+ const response = await getServices().locateService(String(id), {
97
+ fields: fieldsToSend,
98
+ });
117
99
  return applyTransform(response.data, [
118
100
  snakeToCamel(),
119
101
  itemResponseHandler,
@@ -135,11 +117,9 @@ const preRequestHandler = ({
135
117
  return (item: ApiParams) => ({
136
118
  ...item,
137
119
  assignee:
138
- item.group?.type === WebitelContactsGroupType.DYNAMIC
139
- ? {}
140
- : item.assignee,
141
- rootId,
142
- catalogId,
120
+ item.group?.type === ContactsGroupType.Dynamic ? {} : item.assignee,
121
+ rootId: rootId ?? item.rootId,
122
+ catalogId: catalogId ?? item.catalogId,
143
123
  });
144
124
  };
145
125
 
@@ -152,17 +132,19 @@ const addService = async ({
152
132
  rootId: ApiId;
153
133
  catalogId: ApiId;
154
134
  }) => {
135
+ const fieldsToSend = getShallowFieldsToSendFromZodSchema(CreateServiceBody);
136
+
155
137
  const item = applyTransform(itemInstance, [
156
138
  preRequestHandler({
157
139
  rootId,
158
140
  catalogId,
159
141
  }),
160
- camelToSnake(),
161
142
  sanitize(fieldsToSend),
143
+ camelToSnake(),
162
144
  ]);
163
145
 
164
146
  try {
165
- const response = await servicesService.createService(item);
147
+ const response = await getServices().createService(item);
166
148
  return applyTransform(response.data, [
167
149
  snakeToCamel(),
168
150
  ]);
@@ -184,17 +166,19 @@ const updateService = async ({
184
166
  rootId: ApiId;
185
167
  catalogId: ApiId;
186
168
  }) => {
169
+ const fieldsToSend = getShallowFieldsToSendFromZodSchema(UpdateServiceBody);
170
+
187
171
  const item = applyTransform(itemInstance, [
188
172
  preRequestHandler({
189
173
  rootId,
190
174
  catalogId,
191
175
  }),
192
- camelToSnake(),
193
176
  sanitize(fieldsToSend),
177
+ camelToSnake(),
194
178
  ]);
195
179
 
196
180
  try {
197
- const response = await servicesService.updateService(String(id), item);
181
+ const response = await getServices().updateService(String(id), item);
198
182
  return applyTransform(response.data, [
199
183
  snakeToCamel(),
200
184
  ]);
@@ -206,12 +190,14 @@ const updateService = async ({
206
190
  };
207
191
 
208
192
  const patchService = async ({ changes, id }: PatchItemParams) => {
193
+ const fieldsToSend = getShallowFieldsToSendFromZodSchema(UpdateService2Body);
194
+
209
195
  const body = applyTransform(changes, [
210
196
  sanitize(fieldsToSend),
211
197
  camelToSnake(),
212
198
  ]);
213
199
  try {
214
- const response = await servicesService.updateService2(String(id), body);
200
+ const response = await getServices().updateService2(String(id), body);
215
201
  return applyTransform(response.data, [
216
202
  snakeToCamel(),
217
203
  ]);
@@ -224,7 +210,7 @@ const patchService = async ({ changes, id }: PatchItemParams) => {
224
210
 
225
211
  const deleteService = async ({ id }: DeleteItemParams) => {
226
212
  try {
227
- const response = await servicesService.deleteService([
213
+ const response = await getServices().deleteService([
228
214
  String(id),
229
215
  ]);
230
216
  return applyTransform(response.data, []);
@@ -10,6 +10,7 @@ export * from './caseCloseReasonGroups/caseCloseReasonGroups';
10
10
  export * from './caseCloseReasons/caseCloseReasons';
11
11
  export * from './casePriorities/casePriorities';
12
12
  export * from './caseServiceCatalogs/serviceCatalogs';
13
+ export * from './caseServices/services';
13
14
  export * from './caseSources/caseSources';
14
15
  export * from './caseStatusConditions/caseStatusConditions';
15
16
  export * from './caseStatuses/caseStatuses';
@@ -0,0 +1,15 @@
1
+ import type { WebitelCasesService } from '@webitel/api-services/gen/models';
2
+ import { z } from 'zod';
3
+ import { lookupSchema } from '../_shared/lookup.validations';
4
+ import type { ZodShape } from '../types';
5
+
6
+ export const caseServiceSchema = z.object<ZodShape<WebitelCasesService>>({
7
+ name: z.string().min(1),
8
+ assignee: lookupSchema.optional(),
9
+ group: lookupSchema.optional(),
10
+ sla: lookupSchema.optional(),
11
+ defaultPriority: lookupSchema.optional(),
12
+ code: z.string().optional(),
13
+ description: z.string().optional(),
14
+ state: z.boolean().default(true),
15
+ });
@@ -0,0 +1,23 @@
1
+ import type { WebitelCasesCatalog } from '@webitel/api-services/gen/models';
2
+ import { z } from 'zod';
3
+ import {
4
+ lookupSchema,
5
+ requiredLookupSchema,
6
+ } from '../_shared/lookup.validations';
7
+ import type { ZodShape } from '../types';
8
+
9
+ export const caseServiceCatalogSchema = z.object<ZodShape<WebitelCasesCatalog>>(
10
+ {
11
+ name: z.string().min(1),
12
+ prefix: z.string().min(1),
13
+ status: requiredLookupSchema,
14
+ closeReasonGroup: requiredLookupSchema,
15
+ sla: requiredLookupSchema,
16
+ defaultPriority: requiredLookupSchema,
17
+ teams: z.array(lookupSchema).optional(),
18
+ skills: z.array(lookupSchema).optional(),
19
+ code: z.string().optional(),
20
+ description: z.string().optional(),
21
+ state: z.boolean().default(true),
22
+ },
23
+ );
@@ -6,6 +6,8 @@ export * from './calendar/calendar.validations';
6
6
  export * from './caseCloseReason/caseCloseReason.validations';
7
7
  export * from './caseCloseReasonGroup/caseCloseReasonGroup.validations';
8
8
  export * from './casePriority/casePriority.validations';
9
+ export * from './caseService/caseService.validations';
10
+ export * from './caseServiceCatalog/caseServiceCatalog.validations';
9
11
  export * from './caseSource/caseSource.validations';
10
12
  export * from './caseStatus/caseStatus.validations';
11
13
  export * from './caseStatusCondition/caseStatusCondition.validations';