@webitel/api-services 1.0.5 → 1.0.7

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 (232) hide show
  1. package/package.json +2 -1
  2. package/src/api/clients/caseComments/caseComments.ts +141 -0
  3. package/src/api/clients/caseFiles/caseFiles.ts +79 -0
  4. package/src/api/clients/caseLinks/caseLinks.ts +150 -0
  5. package/src/api/clients/caseRelatedCases/caseRelatedCases.ts +125 -0
  6. package/src/api/clients/caseServices/services.ts +38 -72
  7. package/src/api/clients/cases/_internals/ftsService.ts +67 -0
  8. package/src/api/clients/cases/_internals/stringifyCaseFilters.ts +156 -0
  9. package/src/api/clients/cases/cases.ts +360 -0
  10. package/src/api/clients/chatMessagesHistory/chatMessagesHistory.ts +64 -0
  11. package/src/api/clients/configurations/configurations.ts +56 -39
  12. package/src/api/clients/contactCases/contactCases.ts +109 -0
  13. package/src/api/clients/emails/emails.ts +11 -7
  14. package/src/api/clients/index.ts +9 -0
  15. package/src/api/clients/labels/labels.ts +24 -29
  16. package/src/api/clients/phones/phones.ts +11 -7
  17. package/src/api/clients/timeline/timeline.ts +124 -0
  18. package/src/api/clients/variables/variables.ts +10 -5
  19. package/src/api/clients/wtTypes/_shared/utils/assignFieldPositions.ts +28 -0
  20. package/src/api/clients/wtTypes/_shared/utils/sortDynamicFields.ts +7 -9
  21. package/src/api/clients/wtTypes/adjunctTypeRecords/adjunctTypeRecords.ts +19 -16
  22. package/src/api/clients/wtTypes/adjunctTypes/adjunctTypes.ts +4 -0
  23. package/src/api/clients/wtTypes/typeExtensions/typeExtensions.ts +21 -31
  24. package/src/api/clients//321/201ontacts/contacts.ts +103 -234
  25. package/src/api/clients//321/201ontacts/getContactAccessFromMode.ts +9 -0
  26. package/src/api/clients//321/201ontacts/index.ts +1 -1
  27. package/src/gen/_models/contactsCallFile.ts +3 -0
  28. package/src/gen/_models/contactsCallFileType.ts +18 -0
  29. package/src/gen/_models/index.ts +9 -0
  30. package/src/gen/_models/webitelCasesCallFile.ts +3 -0
  31. package/src/gen/_models/webitelCasesCallFileType.ts +18 -0
  32. package/src/gen-wire/_models/contactsCallFile.ts +3 -0
  33. package/src/gen-wire/_models/contactsCallFileType.ts +18 -0
  34. package/src/gen-wire/_models/index.ts +2 -0
  35. package/src/gen-wire/_models/webitelCasesCallFile.ts +3 -0
  36. package/src/gen-wire/_models/webitelCasesCallFileType.ts +18 -0
  37. package/src/gen-wire/access-store/access-store.ts +1 -1
  38. package/src/gen-wire/agent-absence-service/agent-absence-service.ts +1 -1
  39. package/src/gen-wire/agent-chat-service/agent-chat-service.ts +1 -1
  40. package/src/gen-wire/agent-pause-cause-service/agent-pause-cause-service.ts +1 -1
  41. package/src/gen-wire/agent-service/agent-service.ts +1 -1
  42. package/src/gen-wire/agent-skill-service/agent-skill-service.ts +1 -1
  43. package/src/gen-wire/agent-team-service/agent-team-service.ts +1 -1
  44. package/src/gen-wire/agent-working-conditions-service/agent-working-conditions-service.ts +1 -1
  45. package/src/gen-wire/agent-working-schedule-service/agent-working-schedule-service.ts +1 -1
  46. package/src/gen-wire/articles/articles.ts +1 -1
  47. package/src/gen-wire/attachments/attachments.ts +1 -1
  48. package/src/gen-wire/audit-form-service/audit-form-service.ts +1 -1
  49. package/src/gen-wire/auth/auth.ts +1 -1
  50. package/src/gen-wire/backend-profile-service/backend-profile-service.ts +1 -1
  51. package/src/gen-wire/bucket-service/bucket-service.ts +1 -1
  52. package/src/gen-wire/calendar-service/calendar-service.ts +1 -1
  53. package/src/gen-wire/call-service/call-service.ts +1 -1
  54. package/src/gen-wire/case-comments/case-comments.ts +1 -1
  55. package/src/gen-wire/case-communications/case-communications.ts +1 -1
  56. package/src/gen-wire/case-files/case-files.ts +1 -1
  57. package/src/gen-wire/case-links/case-links.ts +1 -1
  58. package/src/gen-wire/case-timeline/case-timeline.ts +1 -1
  59. package/src/gen-wire/case-timeline/case-timeline.zod.ts +14 -0
  60. package/src/gen-wire/cases/cases.ts +1 -1
  61. package/src/gen-wire/cases-chat-catalog/cases-chat-catalog.ts +1 -1
  62. package/src/gen-wire/catalogs/catalogs.ts +1 -1
  63. package/src/gen-wire/classes/classes.ts +1 -1
  64. package/src/gen-wire/close-reason-groups/close-reason-groups.ts +1 -1
  65. package/src/gen-wire/close-reasons/close-reasons.ts +1 -1
  66. package/src/gen-wire/cognitive-profile-service/cognitive-profile-service.ts +1 -1
  67. package/src/gen-wire/comments/comments.ts +1 -1
  68. package/src/gen-wire/communication-type-service/communication-type-service.ts +1 -1
  69. package/src/gen-wire/config-service/config-service.ts +1 -1
  70. package/src/gen-wire/contact-groups/contact-groups.ts +1 -1
  71. package/src/gen-wire/contact-linking-service/contact-linking-service.ts +1 -1
  72. package/src/gen-wire/contacts/contacts.ts +1 -1
  73. package/src/gen-wire/contacts-chat-catalog/contacts-chat-catalog.ts +1 -1
  74. package/src/gen-wire/customer/customer.ts +1 -1
  75. package/src/gen-wire/customers/customers.ts +1 -1
  76. package/src/gen-wire/devices/devices.ts +1 -1
  77. package/src/gen-wire/dictionaries/dictionaries.ts +1 -1
  78. package/src/gen-wire/domains/domains.ts +1 -1
  79. package/src/gen-wire/dynamic-conditions/dynamic-conditions.ts +1 -1
  80. package/src/gen-wire/dynamic-groups/dynamic-groups.ts +1 -1
  81. package/src/gen-wire/email-profile-service/email-profile-service.ts +1 -1
  82. package/src/gen-wire/emails/emails.ts +1 -1
  83. package/src/gen-wire/embedding-models/embedding-models.ts +1 -1
  84. package/src/gen-wire/extensions/extensions.ts +1 -1
  85. package/src/gen-wire/feedback-service/feedback-service.ts +1 -1
  86. package/src/gen-wire/file-policies-service/file-policies-service.ts +1 -1
  87. package/src/gen-wire/file-service/file-service.ts +1 -1
  88. package/src/gen-wire/file-transcript-service/file-transcript-service.ts +1 -1
  89. package/src/gen-wire/forecast-calculation-service/forecast-calculation-service.ts +1 -1
  90. package/src/gen-wire/ftsservice/ftsservice.ts +1 -1
  91. package/src/gen-wire/groups/groups.ts +1 -1
  92. package/src/gen-wire/im-service-provider-v1-telegrambotservice/im-service-provider-v1-telegrambotservice.ts +1 -1
  93. package/src/gen-wire/imclients/imclients.ts +1 -1
  94. package/src/gen-wire/import-template-service/import-template-service.ts +1 -1
  95. package/src/gen-wire/index.ts +2 -0
  96. package/src/gen-wire/knowledgebase-search/knowledgebase-search.ts +1 -1
  97. package/src/gen-wire/labels/labels.ts +1 -1
  98. package/src/gen-wire/languages/languages.ts +1 -1
  99. package/src/gen-wire/ldap/ldap.ts +1 -1
  100. package/src/gen-wire/list-service/list-service.ts +1 -1
  101. package/src/gen-wire/logger-service/logger-service.ts +1 -1
  102. package/src/gen-wire/managers/managers.ts +1 -1
  103. package/src/gen-wire/media-file-service/media-file-service.ts +1 -1
  104. package/src/gen-wire/meeting-service/meeting-service.ts +1 -1
  105. package/src/gen-wire/member-service/member-service.ts +1 -1
  106. package/src/gen-wire/messages/messages.ts +1 -1
  107. package/src/gen-wire/oauth2-federation/oauth2-federation.ts +1 -1
  108. package/src/gen-wire/online-skills/online-skills.ts +1 -1
  109. package/src/gen-wire/outbound-resource-group-service/outbound-resource-group-service.ts +1 -1
  110. package/src/gen-wire/outbound-resource-service/outbound-resource-service.ts +1 -1
  111. package/src/gen-wire/pause-template-service/pause-template-service.ts +1 -1
  112. package/src/gen-wire/pdf-service/pdf-service.ts +1 -1
  113. package/src/gen-wire/permissions/permissions.ts +1 -1
  114. package/src/gen-wire/phones/phones.ts +1 -1
  115. package/src/gen-wire/photos/photos.ts +1 -1
  116. package/src/gen-wire/presence/presence.ts +1 -1
  117. package/src/gen-wire/preset-query-service/preset-query-service.ts +1 -1
  118. package/src/gen-wire/priorities/priorities.ts +1 -1
  119. package/src/gen-wire/queue-bucket-service/queue-bucket-service.ts +1 -1
  120. package/src/gen-wire/queue-hook-service/queue-hook-service.ts +1 -1
  121. package/src/gen-wire/queue-resources-service/queue-resources-service.ts +1 -1
  122. package/src/gen-wire/queue-service/queue-service.ts +1 -1
  123. package/src/gen-wire/queue-skill-service/queue-skill-service.ts +1 -1
  124. package/src/gen-wire/quick-replies-service/quick-replies-service.ts +1 -1
  125. package/src/gen-wire/records/records.ts +1 -1
  126. package/src/gen-wire/region-service/region-service.ts +1 -1
  127. package/src/gen-wire/related-cases/related-cases.ts +1 -1
  128. package/src/gen-wire/retrieval/retrieval.ts +1 -1
  129. package/src/gen-wire/routing-chat-plan-service/routing-chat-plan-service.ts +1 -1
  130. package/src/gen-wire/routing-outbound-call-service/routing-outbound-call-service.ts +1 -1
  131. package/src/gen-wire/routing-schema-service/routing-schema-service.ts +1 -1
  132. package/src/gen-wire/routing-variable-service/routing-variable-service.ts +1 -1
  133. package/src/gen-wire/schema-variables-service/schema-variables-service.ts +1 -1
  134. package/src/gen-wire/schema-version-service/schema-version-service.ts +1 -1
  135. package/src/gen-wire/services/services.ts +1 -1
  136. package/src/gen-wire/shift-template-service/shift-template-service.ts +1 -1
  137. package/src/gen-wire/skill-service/skill-service.ts +1 -1
  138. package/src/gen-wire/slaconditions/slaconditions.ts +1 -1
  139. package/src/gen-wire/slas/slas.ts +1 -1
  140. package/src/gen-wire/sources/sources.ts +1 -1
  141. package/src/gen-wire/spaces/spaces.ts +1 -1
  142. package/src/gen-wire/status-conditions/status-conditions.ts +1 -1
  143. package/src/gen-wire/statuses/statuses.ts +1 -1
  144. package/src/gen-wire/system-setting-service/system-setting-service.ts +1 -1
  145. package/src/gen-wire/tags/tags.ts +1 -1
  146. package/src/gen-wire/team-hook-service/team-hook-service.ts +1 -1
  147. package/src/gen-wire/team-trigger-service/team-trigger-service.ts +1 -1
  148. package/src/gen-wire/timeline/timeline.ts +1 -1
  149. package/src/gen-wire/timeline/timeline.zod.ts +14 -0
  150. package/src/gen-wire/timezones/timezones.ts +1 -1
  151. package/src/gen-wire/trigger-service/trigger-service.ts +1 -1
  152. package/src/gen-wire/two-factor-authentication/two-factor-authentication.ts +1 -1
  153. package/src/gen-wire/types/types.ts +1 -1
  154. package/src/gen-wire/user-access-tokens/user-access-tokens.ts +1 -1
  155. package/src/gen-wire/user-helper-service/user-helper-service.ts +1 -1
  156. package/src/gen-wire/users/users.ts +1 -1
  157. package/src/gen-wire/variables/variables.ts +1 -1
  158. package/src/gen-wire/versions/versions.ts +1 -1
  159. package/src/gen-wire/web-hook-service/web-hook-service.ts +1 -1
  160. package/src/gen-wire/webitel-im-api-gateway-v1-account/webitel-im-api-gateway-v1-account.ts +1 -1
  161. package/src/gen-wire/webitel-im-api-gateway-v1-bots/webitel-im-api-gateway-v1-bots.ts +1 -1
  162. package/src/gen-wire/webitel-im-api-gateway-v1-contacts/webitel-im-api-gateway-v1-contacts.ts +1 -1
  163. package/src/gen-wire/webitel-im-api-gateway-v1-contactsettingsmanagement/webitel-im-api-gateway-v1-contactsettingsmanagement.ts +1 -1
  164. package/src/gen-wire/webitel-im-api-gateway-v1-message/webitel-im-api-gateway-v1-message.ts +1 -1
  165. package/src/gen-wire/webitel-im-api-gateway-v1-messagehistory/webitel-im-api-gateway-v1-messagehistory.ts +1 -1
  166. package/src/gen-wire/webitel-im-api-gateway-v1-threadmanagement/webitel-im-api-gateway-v1-threadmanagement.ts +1 -1
  167. package/src/gen-wire/webitel-im-api-gateway-v1-threadpermission/webitel-im-api-gateway-v1-threadpermission.ts +1 -1
  168. package/src/gen-wire/webitel-im-api-provider-v1-facebookservice/webitel-im-api-provider-v1-facebookservice.ts +1 -1
  169. package/src/gen-wire/webitel-im-api-provider-v1-instagramservice/webitel-im-api-provider-v1-instagramservice.ts +1 -1
  170. package/src/gen-wire/webitel-im-api-provider-v1-metaappservice/webitel-im-api-provider-v1-metaappservice.ts +1 -1
  171. package/src/gen-wire/webitel-im-api-provider-v1-metaoauthservice/webitel-im-api-provider-v1-metaoauthservice.ts +1 -1
  172. package/src/gen-wire/webitel-im-api-provider-v1-whatsappservice/webitel-im-api-provider-v1-whatsappservice.ts +1 -1
  173. package/src/gen-wire/webitel-im-provider-v1-facebookservice/webitel-im-provider-v1-facebookservice.ts +1 -1
  174. package/src/gen-wire/webitel-im-provider-v1-gateservice/webitel-im-provider-v1-gateservice.ts +1 -1
  175. package/src/gen-wire/webitel-im-provider-v1-gatetemplateservice/webitel-im-provider-v1-gatetemplateservice.ts +1 -1
  176. package/src/gen-wire/webitel-im-provider-v1-instagramservice/webitel-im-provider-v1-instagramservice.ts +1 -1
  177. package/src/gen-wire/webitel-im-provider-v1-metaappservice/webitel-im-provider-v1-metaappservice.ts +1 -1
  178. package/src/gen-wire/webitel-im-provider-v1-metaoauthservice/webitel-im-provider-v1-metaoauthservice.ts +1 -1
  179. package/src/gen-wire/webitel-im-provider-v1-providermessageservice/webitel-im-provider-v1-providermessageservice.ts +1 -1
  180. package/src/gen-wire/webitel-im-provider-v1-viberservice/webitel-im-provider-v1-viberservice.ts +1 -1
  181. package/src/gen-wire/webitel-im-provider-v1-whatsappservice/webitel-im-provider-v1-whatsappservice.ts +1 -1
  182. package/src/gen-wire/working-condition-service/working-condition-service.ts +1 -1
  183. package/src/gen-wire/working-schedule-service/working-schedule-service.ts +1 -1
  184. package/src/validations/adjunctType/adjunctType.validations.ts +18 -0
  185. package/src/validations/case/case.validations.ts +33 -0
  186. package/src/validations/caseClose/caseClose.validations.ts +30 -0
  187. package/src/validations/caseExportOptions/caseExportOptions.validations.ts +27 -0
  188. package/src/validations/contact/contact.validations.ts +12 -7
  189. package/src/validations/index.ts +5 -0
  190. package/src/validations/typeExtension/typeExtension.validations.ts +8 -0
  191. package/types/.tsbuildinfo +1 -1
  192. package/types/api/clients/caseComments/caseComments.d.ts +20 -0
  193. package/types/api/clients/caseFiles/caseFiles.d.ts +10 -0
  194. package/types/api/clients/caseLinks/caseLinks.d.ts +22 -0
  195. package/types/api/clients/caseRelatedCases/caseRelatedCases.d.ts +14 -0
  196. package/types/api/clients/caseServices/services.d.ts +3 -12
  197. package/types/api/clients/cases/_internals/ftsService.d.ts +7 -0
  198. package/types/api/clients/cases/_internals/stringifyCaseFilters.d.ts +2 -0
  199. package/types/api/clients/cases/cases.d.ts +35 -0
  200. package/types/api/clients/chatMessagesHistory/chatMessagesHistory.d.ts +15 -0
  201. package/types/api/clients/contactCases/contactCases.d.ts +9 -0
  202. package/types/api/clients/index.d.ts +9 -0
  203. package/types/api/clients/labels/labels.d.ts +2 -2
  204. package/types/api/clients/timeline/timeline.d.ts +16 -0
  205. package/types/api/clients/wtTypes/_shared/utils/assignFieldPositions.d.ts +2 -0
  206. package/types/api/clients/wtTypes/_shared/utils/sortDynamicFields.d.ts +2 -2
  207. package/types/api/clients/wtTypes/adjunctTypeRecords/adjunctTypeRecords.d.ts +11 -11
  208. package/types/api/clients/wtTypes/typeExtensions/typeExtensions.d.ts +1 -1
  209. package/types/api/clients//321/201ontacts/getContactAccessFromMode.d.ts +5 -0
  210. package/types/api/clients//321/201ontacts/index.d.ts +1 -1
  211. package/types/gen/_models/contactsCallFile.d.ts +3 -0
  212. package/types/gen/_models/contactsCallFileType.d.ts +15 -0
  213. package/types/gen/_models/index.d.ts +8 -0
  214. package/types/gen/_models/webitelCasesCallFile.d.ts +3 -0
  215. package/types/gen/_models/webitelCasesCallFileType.d.ts +15 -0
  216. package/types/gen-wire/_models/contactsCallFile.d.ts +3 -0
  217. package/types/gen-wire/_models/contactsCallFileType.d.ts +15 -0
  218. package/types/gen-wire/_models/index.d.ts +2 -0
  219. package/types/gen-wire/_models/webitelCasesCallFile.d.ts +3 -0
  220. package/types/gen-wire/_models/webitelCasesCallFileType.d.ts +15 -0
  221. package/types/gen-wire/case-timeline/case-timeline.zod.d.ts +10 -0
  222. package/types/gen-wire/index.d.ts +2 -2
  223. package/types/gen-wire/timeline/timeline.zod.d.ts +10 -0
  224. package/types/validations/adjunctType/adjunctType.validations.d.ts +11 -0
  225. package/types/validations/case/case.validations.d.ts +31 -0
  226. package/types/validations/caseClose/caseClose.validations.d.ts +8 -0
  227. package/types/validations/caseExportOptions/caseExportOptions.validations.d.ts +9 -0
  228. package/types/validations/contact/contact.validations.d.ts +15 -15
  229. package/types/validations/index.d.ts +5 -0
  230. package/types/validations/typeExtension/typeExtension.validations.d.ts +20 -0
  231. package/src/api/clients//321/201ontacts/types/ContactEntity.types.ts +0 -25
  232. package/types/api/clients//321/201ontacts/types/ContactEntity.types.d.ts +0 -14
@@ -1,16 +1,17 @@
1
- import { SystemSettingServiceApiFactory } from 'webitel-sdk';
1
+ import { getShallowFieldsToSendFromZodSchema } from '@webitel/api-services/gen/utils';
2
2
  import {
3
- getDefaultGetListResponse,
4
- getDefaultGetParams,
5
- getDefaultInstance,
6
- getDefaultOpenAPIConfig,
7
- } from '../../defaults';
3
+ CreateSystemSettingBody,
4
+ getSystemSettingService,
5
+ SearchAvailableSystemSettingQueryParams,
6
+ SearchSystemSettingQueryParams,
7
+ } from '../../../gen-wire';
8
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
8
9
  import {
9
10
  applyTransform,
10
11
  camelToSnake,
11
12
  merge,
12
13
  notify,
13
- sanitize,
14
+ sanitizeToWire,
14
15
  snakeToCamel,
15
16
  starToSearch,
16
17
  } from '../../transformers';
@@ -22,30 +23,30 @@ import type {
22
23
  UpdateItemParams,
23
24
  } from '../_shared/types';
24
25
 
25
- const instance = getDefaultInstance();
26
- const configuration = getDefaultOpenAPIConfig();
27
-
28
- const configurationService = SystemSettingServiceApiFactory(
29
- configuration,
30
- '',
31
- instance,
32
- );
33
-
34
26
  const getList = async (params: ApiParams) => {
35
- const { page, size, search, sort, fields, name } = applyTransform(params, [
27
+ const listFieldsToSend = getShallowFieldsToSendFromZodSchema(
28
+ SearchSystemSettingQueryParams,
29
+ );
30
+
31
+ const { page, size, fields, sort, name, q } = applyTransform(params, [
36
32
  merge(getDefaultGetParams()),
37
- starToSearch('search'),
33
+ merge({
34
+ q: params.search,
35
+ }),
36
+ sanitizeToWire(listFieldsToSend),
37
+ starToSearch('q'),
38
+ camelToSnake(),
38
39
  ]);
39
40
 
40
41
  try {
41
- const response = await configurationService.searchSystemSetting(
42
+ const response = await getSystemSettingService().searchSystemSetting({
42
43
  page,
43
44
  size,
44
- search,
45
- sort,
46
45
  fields,
46
+ sort,
47
47
  name,
48
- );
48
+ q,
49
+ });
49
50
  const { items, next } = applyTransform(response.data, [
50
51
  snakeToCamel(),
51
52
  merge(getDefaultGetListResponse()),
@@ -63,7 +64,9 @@ const getList = async (params: ApiParams) => {
63
64
 
64
65
  const get = async ({ itemId: id }: GetItemParams) => {
65
66
  try {
66
- const response = await configurationService.readSystemSetting(Number(id));
67
+ const response = await getSystemSettingService().readSystemSetting(
68
+ Number(id),
69
+ );
67
70
  return applyTransform(response.data, [
68
71
  snakeToCamel(),
69
72
  ]);
@@ -74,19 +77,21 @@ const get = async ({ itemId: id }: GetItemParams) => {
74
77
  }
75
78
  };
76
79
 
80
+ // `value` is a free-form `google.protobuf.Value` on the backend and has no
81
+ // fixed shape, so it's not part of the generated body schema — kept on the
82
+ // allowlist by hand alongside it (mirrors `custom` on contacts).
77
83
  const fieldsToSend = [
78
- 'id',
79
- 'name',
84
+ ...getShallowFieldsToSendFromZodSchema(CreateSystemSettingBody),
80
85
  'value',
81
86
  ];
82
87
 
83
88
  const add = async ({ itemInstance }: AddItemParams) => {
84
89
  const item = applyTransform(itemInstance, [
85
- sanitize(fieldsToSend),
90
+ sanitizeToWire(fieldsToSend),
86
91
  camelToSnake(),
87
92
  ]);
88
93
  try {
89
- const response = await configurationService.createSystemSetting(item);
94
+ const response = await getSystemSettingService().createSystemSetting(item);
90
95
  return applyTransform(response.data, [
91
96
  snakeToCamel(),
92
97
  ]);
@@ -99,11 +104,11 @@ const add = async ({ itemInstance }: AddItemParams) => {
99
104
 
100
105
  const update = async ({ itemInstance, itemId: id }: UpdateItemParams) => {
101
106
  const item = applyTransform(itemInstance, [
102
- sanitize(fieldsToSend),
107
+ sanitizeToWire(fieldsToSend),
103
108
  camelToSnake(),
104
109
  ]);
105
110
  try {
106
- const response = await configurationService.updateSystemSetting(
111
+ const response = await getSystemSettingService().updateSystemSetting(
107
112
  Number(id),
108
113
  item,
109
114
  );
@@ -127,7 +132,9 @@ const getLookup = (params: Parameters<typeof getList>[0]) =>
127
132
 
128
133
  const deleteItem = async ({ id }: DeleteItemParams) => {
129
134
  try {
130
- const response = await configurationService.deleteSystemSetting(Number(id));
135
+ const response = await getSystemSettingService().deleteSystemSetting(
136
+ Number(id),
137
+ );
131
138
  return applyTransform(response.data, []);
132
139
  } catch (err) {
133
140
  throw applyTransform(err, [
@@ -137,19 +144,29 @@ const deleteItem = async ({ id }: DeleteItemParams) => {
137
144
  };
138
145
 
139
146
  const getObjectsList = async (params: ApiParams) => {
140
- const { page, size, search, sort, fields } = applyTransform(params, [
147
+ const listFieldsToSend = getShallowFieldsToSendFromZodSchema(
148
+ SearchAvailableSystemSettingQueryParams,
149
+ );
150
+
151
+ const { page, size, fields, sort, q } = applyTransform(params, [
141
152
  merge(getDefaultGetParams()),
142
- starToSearch('search'),
153
+ merge({
154
+ q: params.search,
155
+ }),
156
+ sanitizeToWire(listFieldsToSend),
157
+ starToSearch('q'),
158
+ camelToSnake(),
143
159
  ]);
144
160
 
145
161
  try {
146
- const response = await configurationService.searchAvailableSystemSetting(
147
- page,
148
- size,
149
- search,
150
- sort,
151
- fields,
152
- );
162
+ const response =
163
+ await getSystemSettingService().searchAvailableSystemSetting({
164
+ page,
165
+ size,
166
+ fields,
167
+ sort,
168
+ q,
169
+ });
153
170
  const { items, next } = applyTransform(response.data, [
154
171
  snakeToCamel(),
155
172
  merge(getDefaultGetListResponse()),
@@ -0,0 +1,109 @@
1
+ import { snakeToKebab } from '@webitel/api-services/utils';
2
+ import { getCases } from '../../../gen-wire';
3
+ import { getDefaultGetListResponse, getDefaultGetParams } from '../../defaults';
4
+ import {
5
+ applyTransform,
6
+ merge,
7
+ notify,
8
+ snakeToCamel,
9
+ } from '../../transformers';
10
+ import type { ApiId, ApiParams } from '../_shared/types';
11
+ import { FTSServiceAPI } from '../cases/_internals/ftsService';
12
+ import { stringifyCaseFilters } from '../cases/_internals/stringifyCaseFilters';
13
+
14
+ function transformSourceType(data: ApiParams) {
15
+ if (Array.isArray(data)) {
16
+ return data.map((item) => {
17
+ if (item.source?.type) {
18
+ item.source.type = snakeToKebab(item.source.type.toLowerCase());
19
+ }
20
+ return item;
21
+ });
22
+ }
23
+
24
+ if (data.source?.type) {
25
+ data.source.type = snakeToKebab(data.source.type.toLowerCase());
26
+ }
27
+ return data;
28
+ }
29
+
30
+ const getContactCasesList = async ({
31
+ parentId,
32
+ ...params
33
+ }: {
34
+ parentId: ApiId;
35
+ } & ApiParams) => {
36
+ let ftsIds: Array<string | number> | undefined;
37
+ const { fts } = params;
38
+ if (fts) {
39
+ try {
40
+ const { items } = await FTSServiceAPI.getList({
41
+ page: params.page,
42
+ size: params.size,
43
+ fts: params.fts,
44
+ sort: params.sort,
45
+ objectName: [
46
+ 'cases',
47
+ 'case_comments',
48
+ ],
49
+ });
50
+ ftsIds = items.map(({ id }: ApiParams) => id);
51
+ } catch {
52
+ // skip error, load cases without fts
53
+ }
54
+ }
55
+
56
+ /* everything left over after pulling out the technical query params is a
57
+ * filter, keyed by the (camelCase) filter names stringifyCaseFilters expects */
58
+ const { page, size, q, ids, sort, fields, ...filters } = applyTransform(
59
+ {
60
+ ...params,
61
+ ids: params.ids || ftsIds,
62
+ },
63
+ [
64
+ merge(getDefaultGetParams()),
65
+ (params) => ({
66
+ ...params,
67
+ q: params.search,
68
+ }),
69
+ ],
70
+ );
71
+
72
+ try {
73
+ const response = await getCases().searchCases2(String(parentId), {
74
+ page,
75
+ size,
76
+ q,
77
+ ids,
78
+ sort,
79
+ fields: [
80
+ ...(fields || []),
81
+ 'etag',
82
+ 'id',
83
+ 'custom',
84
+ ],
85
+ filters: stringifyCaseFilters(filters),
86
+ });
87
+
88
+ const { items, next } = applyTransform(response.data, [
89
+ merge(getDefaultGetListResponse()),
90
+ ]);
91
+ return {
92
+ items: applyTransform(items, [
93
+ snakeToCamel([
94
+ 'custom',
95
+ ]),
96
+ transformSourceType,
97
+ ]),
98
+ next,
99
+ };
100
+ } catch (err) {
101
+ throw applyTransform(err, [
102
+ notify,
103
+ ]);
104
+ }
105
+ };
106
+
107
+ export const ContactCasesAPI = {
108
+ getList: getContactCasesList,
109
+ };
@@ -62,6 +62,13 @@ const getList = async ({
62
62
  }
63
63
  };
64
64
 
65
+ const emailFieldsToSend = [
66
+ 'email',
67
+ 'primary',
68
+ 'etag',
69
+ 'type',
70
+ ];
71
+
65
72
  const get = async ({
66
73
  itemId,
67
74
  parentId,
@@ -69,18 +76,12 @@ const get = async ({
69
76
  itemId: ApiId;
70
77
  parentId: ApiId;
71
78
  }) => {
72
- const fields = [
73
- 'email',
74
- 'primary',
75
- 'etag',
76
- 'type',
77
- ];
78
79
  try {
79
80
  const response = await getEmails().locateEmail(
80
81
  String(parentId),
81
82
  String(itemId),
82
83
  {
83
- fields,
84
+ fields: emailFieldsToSend,
84
85
  },
85
86
  );
86
87
  return applyTransform(response.data, [
@@ -142,6 +143,9 @@ const update = async ({
142
143
  String(parentId),
143
144
  itemInstance.etag,
144
145
  item,
146
+ {
147
+ fields: emailFieldsToSend,
148
+ },
145
149
  );
146
150
  const { data } = applyTransform(response.data, [
147
151
  snakeToCamel(),
@@ -8,18 +8,25 @@ export * from './calendars/calendars';
8
8
  export * from './callHistory/callHistory';
9
9
  export * from './caseCloseReasonGroups/caseCloseReasonGroups';
10
10
  export * from './caseCloseReasons/caseCloseReasons';
11
+ export * from './caseComments/caseComments';
12
+ export * from './caseFiles/caseFiles';
13
+ export * from './caseLinks/caseLinks';
11
14
  export * from './casePriorities/casePriorities';
15
+ export * from './caseRelatedCases/caseRelatedCases';
12
16
  export * from './caseServiceCatalogs/serviceCatalogs';
13
17
  export * from './caseServices/services';
14
18
  export * from './caseSources/caseSources';
15
19
  export * from './caseStatusConditions/caseStatusConditions';
16
20
  export * from './caseStatuses/caseStatuses';
21
+ export * from './cases/cases';
17
22
  export * from './catalog/catalog';
18
23
  export * from './changelogs/changelogs';
19
24
  export * from './chatDialogs/chatDialogs';
20
25
  export * from './chatGateways/chatGateways';
26
+ export * from './chatMessagesHistory/chatMessagesHistory';
21
27
  export * from './communications/communications';
22
28
  export * from './configurations/configurations';
29
+ export * from './contactCases/contactCases';
23
30
  export * from './contactGroups/contactGroups';
24
31
  export * from './dynamicConditions/dynamicConditions';
25
32
  export * from './dynamicGroups/dynamicGroups';
@@ -51,8 +58,10 @@ export * from './quickReplies/quickReplies';
51
58
  export * from './regions/regions';
52
59
  // export * from './roles/roles'; fixme: ApplicationAccess import
53
60
  export * from './skills/skills';
61
+ export * from './slaConditions/slaConditions';
54
62
  export * from './slas/slas';
55
63
  export * from './teams/teams';
64
+ export * from './timeline/timeline';
56
65
  export * from './userSettings/userSettings';
57
66
  export * from './users/users';
58
67
  export * from './variables/variables';
@@ -1,42 +1,38 @@
1
- import { LabelsApiFactory } from 'webitel-sdk';
2
- import {
3
- getDefaultGetParams,
4
- getDefaultInstance,
5
- getDefaultOpenAPIConfig,
6
- } from '../../defaults';
1
+ import { getShallowFieldsToSendFromZodSchema } from '@webitel/api-services/gen/utils';
2
+ import { GetLabelsQueryParams, getLabels } from '../../../gen-wire';
3
+ import { getDefaultGetParams } from '../../defaults';
7
4
  import {
8
5
  applyTransform,
9
6
  camelToSnake,
10
7
  merge,
11
8
  notify,
12
- sanitize,
9
+ sanitizeToWire,
13
10
  snakeToCamel,
14
11
  starToSearch,
15
12
  } from '../../transformers';
16
13
  import type { ApiParams } from '../_shared/types';
17
14
 
18
- const instance = getDefaultInstance();
19
- const configuration = getDefaultOpenAPIConfig();
20
-
21
- const service = LabelsApiFactory(configuration, '', instance);
15
+ const getLabelsList = async (params: ApiParams) => {
16
+ const listFieldsToSend =
17
+ getShallowFieldsToSendFromZodSchema(GetLabelsQueryParams);
22
18
 
23
- const getList = async (params: ApiParams) => {
24
- const fieldsToSend = [
25
- 'page',
26
- 'size',
27
- 'search',
28
- 'sort',
29
- 'fields',
30
- 'id',
31
- ];
32
- const { page, size, search } = applyTransform(params, [
33
- sanitize(fieldsToSend),
19
+ const { page, size, q, fields } = applyTransform(params, [
34
20
  merge(getDefaultGetParams()),
35
- starToSearch('search'),
21
+ merge({
22
+ q: params.search,
23
+ }),
24
+ sanitizeToWire(listFieldsToSend),
25
+ starToSearch('q'),
36
26
  camelToSnake(),
37
27
  ]);
28
+
38
29
  try {
39
- const response = await service.getLabels(page, size, search);
30
+ const response = await getLabels().getLabels({
31
+ page,
32
+ size,
33
+ q,
34
+ fields,
35
+ });
40
36
  const { labels, next } = applyTransform(response.data, [
41
37
  snakeToCamel(),
42
38
  merge({
@@ -55,16 +51,15 @@ const getList = async (params: ApiParams) => {
55
51
  }
56
52
  };
57
53
 
58
- const getLabelsLookup = (params: Parameters<typeof getList>[0]) =>
59
- getList({
54
+ const getLabelsLookup = (params: Parameters<typeof getLabelsList>[0]) =>
55
+ getLabelsList({
60
56
  ...params,
61
57
  fields: params.fields || [
62
- 'id',
63
- 'name',
58
+ 'label',
64
59
  ],
65
60
  });
66
61
 
67
62
  export const LabelsAPI = {
68
- getList,
63
+ getList: getLabelsList,
69
64
  getLookup: getLabelsLookup,
70
65
  };
@@ -63,6 +63,13 @@ const getPhonesList = async ({
63
63
  }
64
64
  };
65
65
 
66
+ const phoneFieldsToSend = [
67
+ 'number',
68
+ 'primary',
69
+ 'etag',
70
+ 'type',
71
+ ];
72
+
66
73
  const getPhone = async ({
67
74
  itemId,
68
75
  parentId,
@@ -70,18 +77,12 @@ const getPhone = async ({
70
77
  itemId: ApiId;
71
78
  parentId: ApiId;
72
79
  }) => {
73
- const fields = [
74
- 'number',
75
- 'primary',
76
- 'etag',
77
- 'type',
78
- ];
79
80
  try {
80
81
  const response = await getPhones().locatePhone(
81
82
  String(parentId),
82
83
  String(itemId),
83
84
  {
84
- fields,
85
+ fields: phoneFieldsToSend,
85
86
  },
86
87
  );
87
88
  return applyTransform(response.data, [
@@ -143,6 +144,9 @@ const updatePhone = async ({
143
144
  String(parentId),
144
145
  itemInstance.etag,
145
146
  item,
147
+ {
148
+ fields: phoneFieldsToSend,
149
+ },
146
150
  );
147
151
  const { data } = applyTransform(response.data, [
148
152
  snakeToCamel(),
@@ -0,0 +1,124 @@
1
+ import { getShallowFieldsToSendFromZodSchema } from '@webitel/api-services/gen/utils';
2
+ import {
3
+ GetTimelineQueryParams,
4
+ GetTimelineTimelineQueryParams,
5
+ getCaseTimeline,
6
+ getTimeline,
7
+ } from '../../../gen-wire';
8
+
9
+ import { getDefaultGetParams } from '../../defaults';
10
+ import {
11
+ applyTransform,
12
+ merge,
13
+ notify,
14
+ sanitizeToWire,
15
+ snakeToCamel,
16
+ } from '../../transformers';
17
+ import type { ApiId, ApiParams } from '../_shared/types';
18
+
19
+ type TimelineEntity = 'case' | 'contact';
20
+
21
+ const clients = {
22
+ case: {
23
+ getTimeline: (parentId, params) =>
24
+ getCaseTimeline().getTimeline(parentId, params),
25
+ getTimelineCounter: (parentId) =>
26
+ getCaseTimeline().getTimelineCounter(parentId),
27
+ queryParamsSchema: GetTimelineQueryParams,
28
+ },
29
+ contact: {
30
+ getTimeline: (parentId, params) =>
31
+ getTimeline().getTimelineTimeline(parentId, params),
32
+ getTimelineCounter: (parentId) =>
33
+ getTimeline().getTimelineCounterTimeline(parentId),
34
+ queryParamsSchema: GetTimelineTimelineQueryParams,
35
+ },
36
+ } satisfies Record<
37
+ TimelineEntity,
38
+ {
39
+ getTimeline: (
40
+ parentId: string,
41
+ params: ApiParams,
42
+ ) => Promise<{
43
+ data: unknown;
44
+ }>;
45
+ getTimelineCounter: (parentId: string) => Promise<{
46
+ data: unknown;
47
+ }>;
48
+ queryParamsSchema: unknown;
49
+ }
50
+ >;
51
+
52
+ const getList = async ({
53
+ entity,
54
+ parentId,
55
+ ...rest
56
+ }: {
57
+ entity: TimelineEntity;
58
+ parentId: ApiId;
59
+ } & ApiParams) => {
60
+ const { getTimeline, queryParamsSchema } = clients[entity];
61
+ const fieldsToSend = getShallowFieldsToSendFromZodSchema(queryParamsSchema);
62
+
63
+ const { dateFrom, dateTo, type, page, size } = applyTransform(rest, [
64
+ merge(getDefaultGetParams()),
65
+ sanitizeToWire(fieldsToSend),
66
+ ]);
67
+
68
+ try {
69
+ const response = await getTimeline(String(parentId), {
70
+ page,
71
+ size,
72
+ dateFrom,
73
+ dateTo,
74
+ type,
75
+ });
76
+ // `days` can be a large, deeply-nested tree — merge() would recursively
77
+ // clone the whole thing via deepmerge just to add unused `items`/`next`
78
+ // defaults, which risks a stack overflow on large histories.
79
+ const data = applyTransform(response.data, [
80
+ snakeToCamel(),
81
+ ]);
82
+ return {
83
+ days: data?.days ?? [],
84
+ next: data?.next ?? false,
85
+ };
86
+ } catch (err) {
87
+ throw applyTransform(err, [
88
+ notify,
89
+ ]);
90
+ }
91
+ };
92
+
93
+ const getCounters = async ({
94
+ entity,
95
+ parentId,
96
+ }: {
97
+ entity: TimelineEntity;
98
+ parentId: ApiId;
99
+ }) => {
100
+ const { getTimelineCounter } = clients[entity];
101
+ const defaultObject = {
102
+ callsCount: 0,
103
+ chatsCount: 0,
104
+ emailsCount: 0,
105
+ dateFrom: Date.now(),
106
+ dateTo: Date.now(),
107
+ };
108
+ try {
109
+ const response = await getTimelineCounter(String(parentId));
110
+ return applyTransform(response.data, [
111
+ snakeToCamel(),
112
+ merge(defaultObject),
113
+ ]);
114
+ } catch (err) {
115
+ throw applyTransform(err, [
116
+ notify,
117
+ ]);
118
+ }
119
+ };
120
+
121
+ export const TimelineAPI = {
122
+ getList,
123
+ getCounters,
124
+ };
@@ -61,6 +61,12 @@ const getVariablesList = async ({
61
61
  }
62
62
  };
63
63
 
64
+ const variableFieldsToSend = [
65
+ 'key',
66
+ 'value',
67
+ 'etag',
68
+ ];
69
+
64
70
  // no dedicated "locate one" endpoint exists for variables — reuse the list
65
71
  // endpoint filtered to a single id, matching what the crm-local adapter did
66
72
  const getVariable = async ({
@@ -74,11 +80,7 @@ const getVariable = async ({
74
80
  const response = await getVariables().listVariables(parentId, {
75
81
  page: 1,
76
82
  size: 1,
77
- fields: [
78
- 'key',
79
- 'value',
80
- 'etag',
81
- ],
83
+ fields: variableFieldsToSend,
82
84
  id: [
83
85
  itemId,
84
86
  ],
@@ -145,6 +147,9 @@ const updateVariable = async ({
145
147
  parentId,
146
148
  itemInstance.etag,
147
149
  item,
150
+ {
151
+ fields: variableFieldsToSend,
152
+ },
148
153
  );
149
154
  const { data } = applyTransform(response.data, [
150
155
  snakeToCamel(),
@@ -0,0 +1,28 @@
1
+ import type {
2
+ DataField,
3
+ ProtoDataStruct,
4
+ } from '@webitel/api-services/gen/models';
5
+
6
+ type PositionableDataField = DataField & {
7
+ position?: number;
8
+ };
9
+
10
+ // readonly (system) fields never get a position; every other field is
11
+ // numbered in the order the backend returns it, 1-based.
12
+ export const assignFieldPositions = (
13
+ item: ProtoDataStruct,
14
+ ): ProtoDataStruct => {
15
+ let position = 1;
16
+
17
+ const fields = ((item.fields ?? []) as PositionableDataField[]).map(
18
+ (field) => ({
19
+ ...field,
20
+ position: field.readonly ? undefined : position++,
21
+ }),
22
+ );
23
+
24
+ return {
25
+ ...item,
26
+ fields,
27
+ };
28
+ };
@@ -1,18 +1,16 @@
1
- import deepCopy from 'deep-copy';
2
1
  import type {
3
- WebitelProtoDataField,
4
- WebitelProtoDataStruct,
5
- } from 'webitel-sdk';
2
+ DataField,
3
+ ProtoDataStruct,
4
+ } from '@webitel/api-services/gen/models';
5
+ import deepCopy from 'deep-copy';
6
6
 
7
- // The generated webitel-sdk type omits `position`, but the backend returns it
7
+ // The generated type omits `position`, but the backend returns it
8
8
  // and it drives ordering of dynamic fields.
9
- type SortableDataField = WebitelProtoDataField & {
9
+ type SortableDataField = DataField & {
10
10
  position?: number;
11
11
  };
12
12
 
13
- export const sortDynamicFields = (
14
- item: WebitelProtoDataStruct,
15
- ): WebitelProtoDataStruct => {
13
+ export const sortDynamicFields = (item: ProtoDataStruct): ProtoDataStruct => {
16
14
  const allFields = (item.fields ?? []) as SortableDataField[];
17
15
 
18
16
  const unSortableFields = allFields.filter((field) => !field.position);