@ikatec/digisac-api-sdk 4.9.0 → 4.11.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 (310) hide show
  1. package/README.md +36 -12
  2. package/dist/apis/absence/AbsenceApi.cjs +12 -0
  3. package/dist/apis/absence/AbsenceApi.cjs.map +1 -1
  4. package/dist/apis/absence/AbsenceApi.d.ts +9 -0
  5. package/dist/apis/absence/AbsenceApi.d.ts.map +1 -1
  6. package/dist/apis/absence/AbsenceApi.mjs +12 -0
  7. package/dist/apis/absence/AbsenceApi.mjs.map +1 -1
  8. package/dist/apis/acceptanceTerms/AcceptanceTermsApi.cjs +8 -0
  9. package/dist/apis/acceptanceTerms/AcceptanceTermsApi.cjs.map +1 -1
  10. package/dist/apis/acceptanceTerms/AcceptanceTermsApi.d.ts +8 -1
  11. package/dist/apis/acceptanceTerms/AcceptanceTermsApi.d.ts.map +1 -1
  12. package/dist/apis/acceptanceTerms/AcceptanceTermsApi.mjs +8 -0
  13. package/dist/apis/acceptanceTerms/AcceptanceTermsApi.mjs.map +1 -1
  14. package/dist/apis/accounts/AccountsApi.cjs +5 -0
  15. package/dist/apis/accounts/AccountsApi.cjs.map +1 -1
  16. package/dist/apis/accounts/AccountsApi.d.ts +5 -0
  17. package/dist/apis/accounts/AccountsApi.d.ts.map +1 -1
  18. package/dist/apis/accounts/AccountsApi.mjs +5 -0
  19. package/dist/apis/accounts/AccountsApi.mjs.map +1 -1
  20. package/dist/apis/accounts/types.d.ts +2 -0
  21. package/dist/apis/accounts/types.d.ts.map +1 -1
  22. package/dist/apis/activityLog/ActivityLogApi.cjs +12 -0
  23. package/dist/apis/activityLog/ActivityLogApi.cjs.map +1 -1
  24. package/dist/apis/activityLog/ActivityLogApi.d.ts +8 -0
  25. package/dist/apis/activityLog/ActivityLogApi.d.ts.map +1 -1
  26. package/dist/apis/activityLog/ActivityLogApi.mjs +12 -0
  27. package/dist/apis/activityLog/ActivityLogApi.mjs.map +1 -1
  28. package/dist/apis/categories/CategoriesApi.cjs +7 -0
  29. package/dist/apis/categories/CategoriesApi.cjs.map +1 -1
  30. package/dist/apis/categories/CategoriesApi.d.ts +7 -1
  31. package/dist/apis/categories/CategoriesApi.d.ts.map +1 -1
  32. package/dist/apis/categories/CategoriesApi.mjs +7 -0
  33. package/dist/apis/categories/CategoriesApi.mjs.map +1 -1
  34. package/dist/apis/clientFeedback/ClientFeedbackApi.cjs +5 -1
  35. package/dist/apis/clientFeedback/ClientFeedbackApi.cjs.map +1 -1
  36. package/dist/apis/clientFeedback/ClientFeedbackApi.d.ts +5 -1
  37. package/dist/apis/clientFeedback/ClientFeedbackApi.d.ts.map +1 -1
  38. package/dist/apis/clientFeedback/ClientFeedbackApi.mjs +5 -1
  39. package/dist/apis/clientFeedback/ClientFeedbackApi.mjs.map +1 -1
  40. package/dist/apis/contactBlockLists/ContactBlockListsApi.cjs +36 -0
  41. package/dist/apis/contactBlockLists/ContactBlockListsApi.cjs.map +1 -1
  42. package/dist/apis/contactBlockLists/ContactBlockListsApi.d.ts +32 -1
  43. package/dist/apis/contactBlockLists/ContactBlockListsApi.d.ts.map +1 -1
  44. package/dist/apis/contactBlockLists/ContactBlockListsApi.mjs +36 -0
  45. package/dist/apis/contactBlockLists/ContactBlockListsApi.mjs.map +1 -1
  46. package/dist/apis/contactBlockLists/types.d.ts +6 -1
  47. package/dist/apis/contactBlockLists/types.d.ts.map +1 -1
  48. package/dist/apis/contactBlockListsControls/ContactBlockListsControlsApi.cjs +37 -0
  49. package/dist/apis/contactBlockListsControls/ContactBlockListsControlsApi.cjs.map +1 -1
  50. package/dist/apis/contactBlockListsControls/ContactBlockListsControlsApi.d.ts +33 -1
  51. package/dist/apis/contactBlockListsControls/ContactBlockListsControlsApi.d.ts.map +1 -1
  52. package/dist/apis/contactBlockListsControls/ContactBlockListsControlsApi.mjs +37 -0
  53. package/dist/apis/contactBlockListsControls/ContactBlockListsControlsApi.mjs.map +1 -1
  54. package/dist/apis/contactBlockListsControls/types.d.ts +7 -0
  55. package/dist/apis/contactBlockListsControls/types.d.ts.map +1 -1
  56. package/dist/apis/contacts/ContactsApi.cjs +16 -3
  57. package/dist/apis/contacts/ContactsApi.cjs.map +1 -1
  58. package/dist/apis/contacts/ContactsApi.d.ts +16 -5
  59. package/dist/apis/contacts/ContactsApi.d.ts.map +1 -1
  60. package/dist/apis/contacts/ContactsApi.mjs +16 -3
  61. package/dist/apis/contacts/ContactsApi.mjs.map +1 -1
  62. package/dist/apis/contacts/types.d.ts +6 -1
  63. package/dist/apis/contacts/types.d.ts.map +1 -1
  64. package/dist/apis/creditMovements/CreditMovementsApi.cjs +17 -0
  65. package/dist/apis/creditMovements/CreditMovementsApi.cjs.map +1 -1
  66. package/dist/apis/creditMovements/CreditMovementsApi.d.ts +11 -0
  67. package/dist/apis/creditMovements/CreditMovementsApi.d.ts.map +1 -1
  68. package/dist/apis/creditMovements/CreditMovementsApi.mjs +17 -0
  69. package/dist/apis/creditMovements/CreditMovementsApi.mjs.map +1 -1
  70. package/dist/apis/customFields/CustomFieldsApi.cjs +7 -0
  71. package/dist/apis/customFields/CustomFieldsApi.cjs.map +1 -1
  72. package/dist/apis/customFields/CustomFieldsApi.d.ts +7 -1
  73. package/dist/apis/customFields/CustomFieldsApi.d.ts.map +1 -1
  74. package/dist/apis/customFields/CustomFieldsApi.mjs +7 -0
  75. package/dist/apis/customFields/CustomFieldsApi.mjs.map +1 -1
  76. package/dist/apis/departments/DepartmentsApi.cjs +21 -0
  77. package/dist/apis/departments/DepartmentsApi.cjs.map +1 -1
  78. package/dist/apis/departments/DepartmentsApi.d.ts +20 -2
  79. package/dist/apis/departments/DepartmentsApi.d.ts.map +1 -1
  80. package/dist/apis/departments/DepartmentsApi.mjs +21 -0
  81. package/dist/apis/departments/DepartmentsApi.mjs.map +1 -1
  82. package/dist/apis/departments/types.d.ts +5 -0
  83. package/dist/apis/departments/types.d.ts.map +1 -1
  84. package/dist/apis/distribution/DistributionApi.cjs +32 -0
  85. package/dist/apis/distribution/DistributionApi.cjs.map +1 -1
  86. package/dist/apis/distribution/DistributionApi.d.ts +26 -1
  87. package/dist/apis/distribution/DistributionApi.d.ts.map +1 -1
  88. package/dist/apis/distribution/DistributionApi.mjs +32 -0
  89. package/dist/apis/distribution/DistributionApi.mjs.map +1 -1
  90. package/dist/apis/distribution/types.d.ts +18 -1
  91. package/dist/apis/distribution/types.d.ts.map +1 -1
  92. package/dist/apis/files/FilesApi.cjs +49 -0
  93. package/dist/apis/files/FilesApi.cjs.map +1 -1
  94. package/dist/apis/files/FilesApi.d.ts +45 -2
  95. package/dist/apis/files/FilesApi.d.ts.map +1 -1
  96. package/dist/apis/files/FilesApi.mjs +49 -0
  97. package/dist/apis/files/FilesApi.mjs.map +1 -1
  98. package/dist/apis/files/types.d.ts +45 -7
  99. package/dist/apis/files/types.d.ts.map +1 -1
  100. package/dist/apis/holiday/HolidayApi.cjs +7 -0
  101. package/dist/apis/holiday/HolidayApi.cjs.map +1 -1
  102. package/dist/apis/holiday/HolidayApi.d.ts +7 -1
  103. package/dist/apis/holiday/HolidayApi.d.ts.map +1 -1
  104. package/dist/apis/holiday/HolidayApi.mjs +7 -0
  105. package/dist/apis/holiday/HolidayApi.mjs.map +1 -1
  106. package/dist/apis/integrations/IntegrationsApi.cjs +24 -0
  107. package/dist/apis/integrations/IntegrationsApi.cjs.map +1 -1
  108. package/dist/apis/integrations/IntegrationsApi.d.ts +21 -2
  109. package/dist/apis/integrations/IntegrationsApi.d.ts.map +1 -1
  110. package/dist/apis/integrations/IntegrationsApi.mjs +24 -0
  111. package/dist/apis/integrations/IntegrationsApi.mjs.map +1 -1
  112. package/dist/apis/integrations/types.d.ts +15 -6
  113. package/dist/apis/integrations/types.d.ts.map +1 -1
  114. package/dist/apis/interactiveMessages/InteractiveMessagesApi.cjs +7 -0
  115. package/dist/apis/interactiveMessages/InteractiveMessagesApi.cjs.map +1 -1
  116. package/dist/apis/interactiveMessages/InteractiveMessagesApi.d.ts +7 -1
  117. package/dist/apis/interactiveMessages/InteractiveMessagesApi.d.ts.map +1 -1
  118. package/dist/apis/interactiveMessages/InteractiveMessagesApi.mjs +7 -0
  119. package/dist/apis/interactiveMessages/InteractiveMessagesApi.mjs.map +1 -1
  120. package/dist/apis/kanbanBoards/KanbanBoardsApi.cjs +7 -0
  121. package/dist/apis/kanbanBoards/KanbanBoardsApi.cjs.map +1 -1
  122. package/dist/apis/kanbanBoards/KanbanBoardsApi.d.ts +7 -1
  123. package/dist/apis/kanbanBoards/KanbanBoardsApi.d.ts.map +1 -1
  124. package/dist/apis/kanbanBoards/KanbanBoardsApi.mjs +7 -0
  125. package/dist/apis/kanbanBoards/KanbanBoardsApi.mjs.map +1 -1
  126. package/dist/apis/kanbanCards/KanbanCardsApi.cjs +7 -0
  127. package/dist/apis/kanbanCards/KanbanCardsApi.cjs.map +1 -1
  128. package/dist/apis/kanbanCards/KanbanCardsApi.d.ts +7 -1
  129. package/dist/apis/kanbanCards/KanbanCardsApi.d.ts.map +1 -1
  130. package/dist/apis/kanbanCards/KanbanCardsApi.mjs +7 -0
  131. package/dist/apis/kanbanCards/KanbanCardsApi.mjs.map +1 -1
  132. package/dist/apis/knowledgeBase/KnowledgeBaseApi.cjs +8 -0
  133. package/dist/apis/knowledgeBase/KnowledgeBaseApi.cjs.map +1 -1
  134. package/dist/apis/knowledgeBase/KnowledgeBaseApi.d.ts +8 -1
  135. package/dist/apis/knowledgeBase/KnowledgeBaseApi.d.ts.map +1 -1
  136. package/dist/apis/knowledgeBase/KnowledgeBaseApi.mjs +8 -0
  137. package/dist/apis/knowledgeBase/KnowledgeBaseApi.mjs.map +1 -1
  138. package/dist/apis/knowledgeBaseItem/KnowledgeBaseItemApi.cjs +8 -0
  139. package/dist/apis/knowledgeBaseItem/KnowledgeBaseItemApi.cjs.map +1 -1
  140. package/dist/apis/knowledgeBaseItem/KnowledgeBaseItemApi.d.ts +8 -1
  141. package/dist/apis/knowledgeBaseItem/KnowledgeBaseItemApi.d.ts.map +1 -1
  142. package/dist/apis/knowledgeBaseItem/KnowledgeBaseItemApi.mjs +8 -0
  143. package/dist/apis/knowledgeBaseItem/KnowledgeBaseItemApi.mjs.map +1 -1
  144. package/dist/apis/messages/MessagesApi.cjs +23 -3
  145. package/dist/apis/messages/MessagesApi.cjs.map +1 -1
  146. package/dist/apis/messages/MessagesApi.d.ts +19 -3
  147. package/dist/apis/messages/MessagesApi.d.ts.map +1 -1
  148. package/dist/apis/messages/MessagesApi.mjs +23 -3
  149. package/dist/apis/messages/MessagesApi.mjs.map +1 -1
  150. package/dist/apis/messages/types.d.ts +3 -0
  151. package/dist/apis/messages/types.d.ts.map +1 -1
  152. package/dist/apis/notifications/NotificationsApi.cjs +7 -0
  153. package/dist/apis/notifications/NotificationsApi.cjs.map +1 -1
  154. package/dist/apis/notifications/NotificationsApi.d.ts +7 -1
  155. package/dist/apis/notifications/NotificationsApi.d.ts.map +1 -1
  156. package/dist/apis/notifications/NotificationsApi.mjs +7 -0
  157. package/dist/apis/notifications/NotificationsApi.mjs.map +1 -1
  158. package/dist/apis/organizations/OrganizationsApi.cjs +7 -0
  159. package/dist/apis/organizations/OrganizationsApi.cjs.map +1 -1
  160. package/dist/apis/organizations/OrganizationsApi.d.ts +7 -1
  161. package/dist/apis/organizations/OrganizationsApi.d.ts.map +1 -1
  162. package/dist/apis/organizations/OrganizationsApi.mjs +7 -0
  163. package/dist/apis/organizations/OrganizationsApi.mjs.map +1 -1
  164. package/dist/apis/people/PeopleApi.cjs +7 -0
  165. package/dist/apis/people/PeopleApi.cjs.map +1 -1
  166. package/dist/apis/people/PeopleApi.d.ts +7 -1
  167. package/dist/apis/people/PeopleApi.d.ts.map +1 -1
  168. package/dist/apis/people/PeopleApi.mjs +7 -0
  169. package/dist/apis/people/PeopleApi.mjs.map +1 -1
  170. package/dist/apis/planAiHistory/PlanAiHistoryApi.cjs +16 -0
  171. package/dist/apis/planAiHistory/PlanAiHistoryApi.cjs.map +1 -1
  172. package/dist/apis/planAiHistory/PlanAiHistoryApi.d.ts +10 -0
  173. package/dist/apis/planAiHistory/PlanAiHistoryApi.d.ts.map +1 -1
  174. package/dist/apis/planAiHistory/PlanAiHistoryApi.mjs +16 -0
  175. package/dist/apis/planAiHistory/PlanAiHistoryApi.mjs.map +1 -1
  176. package/dist/apis/roles/RolesApi.cjs +7 -0
  177. package/dist/apis/roles/RolesApi.cjs.map +1 -1
  178. package/dist/apis/roles/RolesApi.d.ts +6 -1
  179. package/dist/apis/roles/RolesApi.d.ts.map +1 -1
  180. package/dist/apis/roles/RolesApi.mjs +7 -0
  181. package/dist/apis/roles/RolesApi.mjs.map +1 -1
  182. package/dist/apis/services/ServicesApi.cjs +68 -0
  183. package/dist/apis/services/ServicesApi.cjs.map +1 -1
  184. package/dist/apis/services/ServicesApi.d.ts +53 -1
  185. package/dist/apis/services/ServicesApi.d.ts.map +1 -1
  186. package/dist/apis/services/ServicesApi.mjs +68 -0
  187. package/dist/apis/services/ServicesApi.mjs.map +1 -1
  188. package/dist/apis/services/types.d.ts +15 -0
  189. package/dist/apis/services/types.d.ts.map +1 -1
  190. package/dist/apis/stickers/StickersApi.cjs +20 -0
  191. package/dist/apis/stickers/StickersApi.cjs.map +1 -1
  192. package/dist/apis/stickers/StickersApi.d.ts +15 -0
  193. package/dist/apis/stickers/StickersApi.d.ts.map +1 -1
  194. package/dist/apis/stickers/StickersApi.mjs +20 -0
  195. package/dist/apis/stickers/StickersApi.mjs.map +1 -1
  196. package/dist/apis/tags/TagsApi.cjs +7 -0
  197. package/dist/apis/tags/TagsApi.cjs.map +1 -1
  198. package/dist/apis/tags/TagsApi.d.ts +7 -1
  199. package/dist/apis/tags/TagsApi.d.ts.map +1 -1
  200. package/dist/apis/tags/TagsApi.mjs +7 -0
  201. package/dist/apis/tags/TagsApi.mjs.map +1 -1
  202. package/dist/apis/timetable/TimetableApi.cjs +7 -0
  203. package/dist/apis/timetable/TimetableApi.cjs.map +1 -1
  204. package/dist/apis/timetable/TimetableApi.d.ts +7 -1
  205. package/dist/apis/timetable/TimetableApi.d.ts.map +1 -1
  206. package/dist/apis/timetable/TimetableApi.mjs +7 -0
  207. package/dist/apis/timetable/TimetableApi.mjs.map +1 -1
  208. package/dist/apis/users/UsersApi.cjs +8 -0
  209. package/dist/apis/users/UsersApi.cjs.map +1 -1
  210. package/dist/apis/users/UsersApi.d.ts +8 -1
  211. package/dist/apis/users/UsersApi.d.ts.map +1 -1
  212. package/dist/apis/users/UsersApi.mjs +8 -0
  213. package/dist/apis/users/UsersApi.mjs.map +1 -1
  214. package/dist/apis/users/types.d.ts +15 -0
  215. package/dist/apis/users/types.d.ts.map +1 -1
  216. package/dist/apis/webhooks/WebhooksApi.cjs +7 -0
  217. package/dist/apis/webhooks/WebhooksApi.cjs.map +1 -1
  218. package/dist/apis/webhooks/WebhooksApi.d.ts +7 -1
  219. package/dist/apis/webhooks/WebhooksApi.d.ts.map +1 -1
  220. package/dist/apis/webhooks/WebhooksApi.mjs +7 -0
  221. package/dist/apis/webhooks/WebhooksApi.mjs.map +1 -1
  222. package/dist/core/ApiClient.d.ts +14 -0
  223. package/dist/core/ApiClient.d.ts.map +1 -1
  224. package/dist/core/ArchivableCrudApi.cjs.map +1 -1
  225. package/dist/core/ArchivableCrudApi.d.ts +1 -1
  226. package/dist/core/ArchivableCrudApi.d.ts.map +1 -1
  227. package/dist/core/ArchivableCrudApi.mjs.map +1 -1
  228. package/dist/core/BaseApiClient.cjs +24 -3
  229. package/dist/core/BaseApiClient.cjs.map +1 -1
  230. package/dist/core/BaseApiClient.d.ts +14 -0
  231. package/dist/core/BaseApiClient.d.ts.map +1 -1
  232. package/dist/core/BaseApiClient.mjs +24 -3
  233. package/dist/core/BaseApiClient.mjs.map +1 -1
  234. package/dist/core/BaseCrudApi.cjs +3 -1
  235. package/dist/core/BaseCrudApi.cjs.map +1 -1
  236. package/dist/core/BaseCrudApi.d.ts +6 -4
  237. package/dist/core/BaseCrudApi.d.ts.map +1 -1
  238. package/dist/core/BaseCrudApi.mjs +3 -1
  239. package/dist/core/BaseCrudApi.mjs.map +1 -1
  240. package/dist/core/requestExternal.cjs +33 -0
  241. package/dist/core/requestExternal.cjs.map +1 -0
  242. package/dist/core/requestExternal.d.ts +9 -0
  243. package/dist/core/requestExternal.d.ts.map +1 -0
  244. package/dist/core/requestExternal.mjs +32 -0
  245. package/dist/core/requestExternal.mjs.map +1 -0
  246. package/dist/core/types.d.ts +1 -1
  247. package/dist/core/types.d.ts.map +1 -1
  248. package/package.json +1 -1
  249. package/src/apis/absence/AbsenceApi.ts +19 -0
  250. package/src/apis/acceptanceTerms/AcceptanceTermsApi.ts +13 -1
  251. package/src/apis/accounts/AccountsApi.ts +5 -0
  252. package/src/apis/accounts/types.ts +2 -0
  253. package/src/apis/activityLog/ActivityLogApi.ts +18 -0
  254. package/src/apis/categories/CategoriesApi.ts +12 -1
  255. package/src/apis/clientFeedback/ClientFeedbackApi.ts +5 -1
  256. package/src/apis/contactBlockLists/ContactBlockListsApi.test.ts +57 -0
  257. package/src/apis/contactBlockLists/ContactBlockListsApi.ts +57 -1
  258. package/src/apis/contactBlockLists/types.ts +6 -1
  259. package/src/apis/contactBlockListsControls/ContactBlockListsControlsApi.test.ts +48 -0
  260. package/src/apis/contactBlockListsControls/ContactBlockListsControlsApi.ts +59 -1
  261. package/src/apis/contactBlockListsControls/types.ts +7 -0
  262. package/src/apis/contacts/ContactsApi.test.ts +20 -4
  263. package/src/apis/contacts/ContactsApi.ts +24 -5
  264. package/src/apis/contacts/types.ts +7 -1
  265. package/src/apis/creditMovements/CreditMovementsApi.ts +27 -0
  266. package/src/apis/customFields/CustomFieldsApi.ts +12 -1
  267. package/src/apis/departments/DepartmentsApi.test.ts +88 -0
  268. package/src/apis/departments/DepartmentsApi.ts +41 -2
  269. package/src/apis/departments/types.ts +6 -0
  270. package/src/apis/distribution/DistributionApi.test.ts +65 -0
  271. package/src/apis/distribution/DistributionApi.ts +50 -1
  272. package/src/apis/distribution/types.ts +17 -1
  273. package/src/apis/files/FilesApi.test.ts +122 -0
  274. package/src/apis/files/FilesApi.ts +107 -2
  275. package/src/apis/files/types.ts +48 -7
  276. package/src/apis/holiday/HolidayApi.ts +16 -1
  277. package/src/apis/integrations/IntegrationsApi.test.ts +42 -0
  278. package/src/apis/integrations/IntegrationsApi.ts +46 -2
  279. package/src/apis/integrations/types.ts +25 -6
  280. package/src/apis/interactiveMessages/InteractiveMessagesApi.ts +12 -1
  281. package/src/apis/kanbanBoards/KanbanBoardsApi.ts +12 -1
  282. package/src/apis/kanbanCards/KanbanCardsApi.ts +12 -1
  283. package/src/apis/knowledgeBase/KnowledgeBaseApi.ts +13 -1
  284. package/src/apis/knowledgeBaseItem/KnowledgeBaseItemApi.ts +13 -1
  285. package/src/apis/messages/MessagesApi.test.ts +13 -7
  286. package/src/apis/messages/MessagesApi.ts +29 -3
  287. package/src/apis/messages/types.ts +3 -0
  288. package/src/apis/notifications/NotificationsApi.ts +12 -1
  289. package/src/apis/organizations/OrganizationsApi.ts +12 -1
  290. package/src/apis/payloads.test-d.ts +172 -0
  291. package/src/apis/people/PeopleApi.ts +16 -1
  292. package/src/apis/planAiHistory/PlanAiHistoryApi.ts +26 -0
  293. package/src/apis/roles/RolesApi.ts +10 -1
  294. package/src/apis/services/ServicesApi.test.ts +45 -0
  295. package/src/apis/services/ServicesApi.ts +91 -1
  296. package/src/apis/services/types.ts +16 -0
  297. package/src/apis/stickers/StickersApi.ts +32 -0
  298. package/src/apis/tags/TagsApi.ts +16 -1
  299. package/src/apis/timetable/TimetableApi.ts +12 -1
  300. package/src/apis/users/UsersApi.ts +17 -1
  301. package/src/apis/users/types.ts +11 -0
  302. package/src/apis/webhooks/WebhooksApi.ts +16 -1
  303. package/src/core/ApiClient.ts +24 -0
  304. package/src/core/ArchivableCrudApi.ts +2 -1
  305. package/src/core/BaseApiClient.test.ts +98 -0
  306. package/src/core/BaseApiClient.ts +49 -4
  307. package/src/core/BaseCrudApi.test-d.ts +11 -1
  308. package/src/core/BaseCrudApi.ts +15 -6
  309. package/src/core/requestExternal.ts +43 -0
  310. package/src/core/types.ts +4 -2
@@ -1,6 +1,7 @@
1
1
  import type { ApiClient, HttpMethod } from './ApiClient'
2
2
  import { ApiConnectionError, ApiError } from './errors'
3
3
  import { DEFAULT_QUERY_FORMAT, type QueryFormat } from './queryString'
4
+ import { requestExternal } from './requestExternal'
4
5
 
5
6
  export interface BaseApiClientOptions {
6
7
  /** How list/get queries are serialized in the URL. Defaults to `'json'`. */
@@ -29,6 +30,53 @@ export class BaseApiClient implements ApiClient {
29
30
  body?: TBody,
30
31
  headers?: Record<string, string>,
31
32
  ): Promise<TResponse> {
33
+ return this.handleResponse<TResponse>(await this.send(method, endpoint, body, headers))
34
+ }
35
+
36
+ /**
37
+ * Sends the request and resolves the raw `Response` of a 2xx answer (headers and body
38
+ * untouched, so a binary body can be read with `arrayBuffer()`). Non-2xx throws the
39
+ * `ApiError` subclass, as {@link request} does.
40
+ */
41
+ async requestRaw<TBody = unknown>(
42
+ method: HttpMethod,
43
+ endpoint: string,
44
+ body?: TBody,
45
+ headers?: Record<string, string>,
46
+ ): Promise<Response> {
47
+ const response = await this.send(method, endpoint, body, headers)
48
+ if (!response.ok) {
49
+ throw ApiError.fromResponse(
50
+ response.status,
51
+ response.statusText,
52
+ response.headers,
53
+ await this.readErrorBody(response),
54
+ )
55
+ }
56
+ return response
57
+ }
58
+
59
+ /**
60
+ * Sends a request to an absolute URL outside the API, without the base URL, the access token
61
+ * and the JSON serialization. Resolves the raw `Response` of a 2xx answer; non-2xx throws the
62
+ * `ApiError` subclass. Override it to intercept those requests as well.
63
+ */
64
+ requestExternal(
65
+ method: HttpMethod,
66
+ url: string,
67
+ body?: BodyInit,
68
+ headers?: Record<string, string>,
69
+ ): Promise<Response> {
70
+ return requestExternal(method, url, body, headers)
71
+ }
72
+
73
+ /** Builds and sends the request; a network failure is thrown as `ApiConnectionError`. */
74
+ protected async send<TBody = unknown>(
75
+ method: HttpMethod,
76
+ endpoint: string,
77
+ body?: TBody,
78
+ headers?: Record<string, string>,
79
+ ): Promise<Response> {
32
80
  const url = `${this.baseUrl}/${endpoint.replace(/^\//, '')}`
33
81
  const init: RequestInit = {
34
82
  method,
@@ -40,17 +88,14 @@ export class BaseApiClient implements ApiClient {
40
88
  ...(body !== undefined && { body: JSON.stringify(body) }),
41
89
  }
42
90
 
43
- let response: Response
44
91
  try {
45
- response = await fetch(url, init)
92
+ return await fetch(url, init)
46
93
  } catch (error) {
47
94
  const reason = error instanceof Error ? error.message : String(error)
48
95
  throw new ApiConnectionError(`Request to ${method} ${url} failed: ${reason}`, {
49
96
  cause: error,
50
97
  })
51
98
  }
52
-
53
- return this.handleResponse<TResponse>(response)
54
99
  }
55
100
 
56
101
  protected async handleResponse<TResponse>(response: Response): Promise<TResponse> {
@@ -1,7 +1,7 @@
1
1
  import { expectError, expectType } from 'tsd'
2
2
  import type { ApiClient } from './ApiClient'
3
3
  import { BaseCrudApi } from './BaseCrudApi'
4
- import type { Paginated } from './types'
4
+ import type { ListQuery, Paginated } from './types'
5
5
 
6
6
  // ── Test model ──────────────────────────────────────────────────────
7
7
 
@@ -40,6 +40,16 @@ expectType<Promise<Item>>(api.create({ name: 'x' }))
40
40
  expectType<Promise<Item>>(api.updateById('1', {}))
41
41
  expectType<Promise<Item>>(api.deleteById('1'))
42
42
 
43
+ // Routes that do not answer the resource on create/update (TCreateResponse, TUpdateResponse)
44
+ const writes = new BaseCrudApi<Item, CreateItem, UpdateItem, ListQuery<Item>, 'OK', void, Item[]>(
45
+ client,
46
+ '/items',
47
+ )
48
+ expectType<Promise<void>>(writes.create({ name: 'x' }))
49
+ expectType<Promise<Item[]>>(writes.updateById('1', {}))
50
+ expectType<Promise<'OK'>>(writes.deleteById('1'))
51
+ expectType<Promise<Item>>(writes.getById('1'))
52
+
43
53
  expectError(api.create({}))
44
54
  expectError(api.create({ name: 1 }))
45
55
  expectError(api.updateById('1', { name: 1 }))
@@ -16,7 +16,9 @@ export type {
16
16
 
17
17
  /**
18
18
  * Generic CRUD resource: the reads of `BaseReadApi` plus `create`, `updateById` and `deleteById`.
19
- * `TDeleteResponse` is what `deleteById` resolves to (most routes answer the text `'OK'`).
19
+ * `TDeleteResponse` is what `deleteById` resolves to (most routes answer the text `'OK'`);
20
+ * `TCreateResponse` and `TUpdateResponse` are what `create` and `updateById` resolve to, for the routes
21
+ * that do not answer the resource (an empty body, `{}`, another model).
20
22
  */
21
23
  export class BaseCrudApi<
22
24
  TResponse,
@@ -24,24 +26,31 @@ export class BaseCrudApi<
24
26
  TUpdate = TCreate,
25
27
  TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,
26
28
  TDeleteResponse = TResponse,
29
+ TCreateResponse = TResponse,
30
+ TUpdateResponse = TResponse,
27
31
  >
28
32
  extends BaseReadApi<TResponse, TQuery>
29
- implements CrudApi<TResponse, TCreate, TUpdate, TQuery, TDeleteResponse>
33
+ implements
34
+ CrudApi<TResponse, TCreate, TUpdate, TQuery, TDeleteResponse, TCreateResponse, TUpdateResponse>
30
35
  {
31
36
  /**
32
37
  * Creates a new resource.
33
38
  * @permissions $resourceName.create
34
39
  */
35
- create(body: TCreate, headers?: Record<string, string>): Promise<TResponse> {
36
- return this.client.post<TResponse, TCreate>(this.basePath, body, headers)
40
+ create(body: TCreate, headers?: Record<string, string>): Promise<TCreateResponse> {
41
+ return this.client.post<TCreateResponse, TCreate>(this.basePath, body, headers)
37
42
  }
38
43
 
39
44
  /**
40
45
  * Updates an existing resource by ID.
41
46
  * @permissions $resourceName.update
42
47
  */
43
- updateById(id: string, body: TUpdate, headers?: Record<string, string>): Promise<TResponse> {
44
- return this.client.put<TResponse, TUpdate>(`${this.basePath}/${id}`, body, headers)
48
+ updateById(
49
+ id: string,
50
+ body: TUpdate,
51
+ headers?: Record<string, string>,
52
+ ): Promise<TUpdateResponse> {
53
+ return this.client.put<TUpdateResponse, TUpdate>(`${this.basePath}/${id}`, body, headers)
45
54
  }
46
55
 
47
56
  /**
@@ -0,0 +1,43 @@
1
+ import type { HttpMethod } from './ApiClient'
2
+ import { ApiConnectionError, ApiError } from './errors'
3
+
4
+ /** The URL without its query string, which may carry a signature that must not reach the logs. */
5
+ function withoutQuery(url: string): string {
6
+ return url.replace(/[?#].*$/s, '')
7
+ }
8
+
9
+ /**
10
+ * Sends a request to an absolute URL outside the API (e.g. a signed storage URL): no base URL, no
11
+ * `Authorization` header and no JSON serialization, `body` goes as is. Resolves the raw `Response`
12
+ * of a 2xx answer; non-2xx throws the `ApiError` subclass with the body as text, and a network
13
+ * failure throws `ApiConnectionError`.
14
+ */
15
+ export async function requestExternal(
16
+ method: HttpMethod,
17
+ url: string,
18
+ body?: BodyInit,
19
+ headers?: Record<string, string>,
20
+ ): Promise<Response> {
21
+ let response: Response
22
+ try {
23
+ response = await fetch(url, {
24
+ method,
25
+ ...(headers && { headers }),
26
+ ...(body !== undefined && { body }),
27
+ })
28
+ } catch (error) {
29
+ const reason = error instanceof Error ? error.message : String(error)
30
+ throw new ApiConnectionError(`Request to ${method} ${withoutQuery(url)} failed: ${reason}`, {
31
+ cause: error,
32
+ })
33
+ }
34
+ if (!response.ok) {
35
+ throw ApiError.fromResponse(
36
+ response.status,
37
+ response.statusText,
38
+ response.headers,
39
+ (await response.text().catch(() => undefined)) || undefined,
40
+ )
41
+ }
42
+ return response
43
+ }
package/src/core/types.ts CHANGED
@@ -160,8 +160,10 @@ export type CrudApi<
160
160
  TUpdate = TCreate,
161
161
  TQuery extends ListQuery<TResponse> = ListQuery<TResponse>,
162
162
  TDeleteResponse = TResponse,
163
+ TCreateResponse = TResponse,
164
+ TUpdateResponse = TResponse,
163
165
  > = HasGetMany<TResponse, TQuery> &
164
166
  HasGetById<TResponse> &
165
- HasCreate<TResponse, TCreate> &
166
- HasUpdateById<TResponse, TUpdate> &
167
+ HasCreate<TCreateResponse, TCreate> &
168
+ HasUpdateById<TUpdateResponse, TUpdate> &
167
169
  HasDeleteById<TDeleteResponse>