@ikatec/digisac-api-sdk 4.15.0 → 4.17.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 (189) hide show
  1. package/README.md +3 -1
  2. package/dist/apis/absence/AbsenceApi.cjs +2 -2
  3. package/dist/apis/absence/AbsenceApi.cjs.map +1 -1
  4. package/dist/apis/absence/AbsenceApi.d.ts +2 -2
  5. package/dist/apis/absence/AbsenceApi.mjs +2 -2
  6. package/dist/apis/absence/AbsenceApi.mjs.map +1 -1
  7. package/dist/apis/absence/types.d.ts +1 -1
  8. package/dist/apis/answers/AnswersApi.cjs +23 -2
  9. package/dist/apis/answers/AnswersApi.cjs.map +1 -1
  10. package/dist/apis/answers/AnswersApi.d.ts +16 -2
  11. package/dist/apis/answers/AnswersApi.d.ts.map +1 -1
  12. package/dist/apis/answers/AnswersApi.mjs +23 -2
  13. package/dist/apis/answers/AnswersApi.mjs.map +1 -1
  14. package/dist/apis/answers/types.d.ts +1 -2
  15. package/dist/apis/answers/types.d.ts.map +1 -1
  16. package/dist/apis/bots/BotsApi.cjs +16 -7
  17. package/dist/apis/bots/BotsApi.cjs.map +1 -1
  18. package/dist/apis/bots/BotsApi.d.ts +13 -7
  19. package/dist/apis/bots/BotsApi.d.ts.map +1 -1
  20. package/dist/apis/bots/BotsApi.mjs +16 -7
  21. package/dist/apis/bots/BotsApi.mjs.map +1 -1
  22. package/dist/apis/bots/types.d.ts +12 -2
  23. package/dist/apis/bots/types.d.ts.map +1 -1
  24. package/dist/apis/campaigns/CampaignsApi.cjs +25 -1
  25. package/dist/apis/campaigns/CampaignsApi.cjs.map +1 -1
  26. package/dist/apis/campaigns/CampaignsApi.d.ts +16 -1
  27. package/dist/apis/campaigns/CampaignsApi.d.ts.map +1 -1
  28. package/dist/apis/campaigns/CampaignsApi.mjs +25 -1
  29. package/dist/apis/campaigns/CampaignsApi.mjs.map +1 -1
  30. package/dist/apis/campaigns/types.d.ts +98 -6
  31. package/dist/apis/campaigns/types.d.ts.map +1 -1
  32. package/dist/apis/cards/types.d.ts +5 -5
  33. package/dist/apis/categories/CategoriesApi.cjs +1 -2
  34. package/dist/apis/categories/CategoriesApi.cjs.map +1 -1
  35. package/dist/apis/categories/CategoriesApi.d.ts +1 -2
  36. package/dist/apis/categories/CategoriesApi.d.ts.map +1 -1
  37. package/dist/apis/categories/CategoriesApi.mjs +1 -2
  38. package/dist/apis/categories/CategoriesApi.mjs.map +1 -1
  39. package/dist/apis/clientFeedback/ClientFeedbackApi.cjs +2 -3
  40. package/dist/apis/clientFeedback/ClientFeedbackApi.cjs.map +1 -1
  41. package/dist/apis/clientFeedback/ClientFeedbackApi.d.ts +2 -3
  42. package/dist/apis/clientFeedback/ClientFeedbackApi.d.ts.map +1 -1
  43. package/dist/apis/clientFeedback/ClientFeedbackApi.mjs +2 -3
  44. package/dist/apis/clientFeedback/ClientFeedbackApi.mjs.map +1 -1
  45. package/dist/apis/contacts/ContactsApi.cjs +10 -6
  46. package/dist/apis/contacts/ContactsApi.cjs.map +1 -1
  47. package/dist/apis/contacts/ContactsApi.d.ts +19 -3
  48. package/dist/apis/contacts/ContactsApi.d.ts.map +1 -1
  49. package/dist/apis/contacts/ContactsApi.mjs +10 -6
  50. package/dist/apis/contacts/ContactsApi.mjs.map +1 -1
  51. package/dist/apis/contacts/types.d.ts +25 -0
  52. package/dist/apis/contacts/types.d.ts.map +1 -1
  53. package/dist/apis/customFields/types.d.ts +4 -4
  54. package/dist/apis/dashboard/DashboardApi.cjs +3 -3
  55. package/dist/apis/dashboard/DashboardApi.cjs.map +1 -1
  56. package/dist/apis/dashboard/DashboardApi.d.ts +3 -3
  57. package/dist/apis/dashboard/DashboardApi.mjs +3 -3
  58. package/dist/apis/dashboard/DashboardApi.mjs.map +1 -1
  59. package/dist/apis/dashboard/types.d.ts +11 -4
  60. package/dist/apis/dashboard/types.d.ts.map +1 -1
  61. package/dist/apis/departments/DepartmentsApi.cjs +5 -5
  62. package/dist/apis/departments/DepartmentsApi.cjs.map +1 -1
  63. package/dist/apis/departments/DepartmentsApi.d.ts +5 -5
  64. package/dist/apis/departments/DepartmentsApi.mjs +5 -5
  65. package/dist/apis/departments/DepartmentsApi.mjs.map +1 -1
  66. package/dist/apis/departments/types.d.ts +6 -0
  67. package/dist/apis/departments/types.d.ts.map +1 -1
  68. package/dist/apis/distribution/DistributionApi.cjs +3 -4
  69. package/dist/apis/distribution/DistributionApi.cjs.map +1 -1
  70. package/dist/apis/distribution/DistributionApi.d.ts +3 -4
  71. package/dist/apis/distribution/DistributionApi.d.ts.map +1 -1
  72. package/dist/apis/distribution/DistributionApi.mjs +3 -4
  73. package/dist/apis/distribution/DistributionApi.mjs.map +1 -1
  74. package/dist/apis/kanbanCards/KanbanCardsApi.cjs +32 -0
  75. package/dist/apis/kanbanCards/KanbanCardsApi.cjs.map +1 -1
  76. package/dist/apis/kanbanCards/KanbanCardsApi.d.ts +27 -1
  77. package/dist/apis/kanbanCards/KanbanCardsApi.d.ts.map +1 -1
  78. package/dist/apis/kanbanCards/KanbanCardsApi.mjs +32 -0
  79. package/dist/apis/kanbanCards/KanbanCardsApi.mjs.map +1 -1
  80. package/dist/apis/kanbanCards/types.d.ts +1 -1
  81. package/dist/apis/kanbanCards/types.d.ts.map +1 -1
  82. package/dist/apis/kanbanColumns/KanbanColumnsApi.cjs +19 -0
  83. package/dist/apis/kanbanColumns/KanbanColumnsApi.cjs.map +1 -1
  84. package/dist/apis/kanbanColumns/KanbanColumnsApi.d.ts +16 -1
  85. package/dist/apis/kanbanColumns/KanbanColumnsApi.d.ts.map +1 -1
  86. package/dist/apis/kanbanColumns/KanbanColumnsApi.mjs +19 -0
  87. package/dist/apis/kanbanColumns/KanbanColumnsApi.mjs.map +1 -1
  88. package/dist/apis/kanbanColumns/types.d.ts +4 -0
  89. package/dist/apis/kanbanColumns/types.d.ts.map +1 -1
  90. package/dist/apis/messages/MessagesApi.cjs +13 -4
  91. package/dist/apis/messages/MessagesApi.cjs.map +1 -1
  92. package/dist/apis/messages/MessagesApi.d.ts +13 -4
  93. package/dist/apis/messages/MessagesApi.d.ts.map +1 -1
  94. package/dist/apis/messages/MessagesApi.mjs +13 -4
  95. package/dist/apis/messages/MessagesApi.mjs.map +1 -1
  96. package/dist/apis/messages/types.d.ts +30 -0
  97. package/dist/apis/messages/types.d.ts.map +1 -1
  98. package/dist/apis/pipeline/types.d.ts +7 -8
  99. package/dist/apis/pipeline/types.d.ts.map +1 -1
  100. package/dist/apis/quickReplies/types.d.ts +4 -1
  101. package/dist/apis/quickReplies/types.d.ts.map +1 -1
  102. package/dist/apis/schedule/types.d.ts +41 -10
  103. package/dist/apis/schedule/types.d.ts.map +1 -1
  104. package/dist/apis/terms/TermsApi.cjs +2 -2
  105. package/dist/apis/terms/TermsApi.cjs.map +1 -1
  106. package/dist/apis/terms/TermsApi.d.ts +2 -2
  107. package/dist/apis/terms/TermsApi.mjs +2 -2
  108. package/dist/apis/terms/TermsApi.mjs.map +1 -1
  109. package/dist/apis/tickets/TicketsApi.cjs +18 -8
  110. package/dist/apis/tickets/TicketsApi.cjs.map +1 -1
  111. package/dist/apis/tickets/TicketsApi.d.ts +15 -8
  112. package/dist/apis/tickets/TicketsApi.d.ts.map +1 -1
  113. package/dist/apis/tickets/TicketsApi.mjs +18 -8
  114. package/dist/apis/tickets/TicketsApi.mjs.map +1 -1
  115. package/dist/apis/tickets/types.d.ts +4 -1
  116. package/dist/apis/tickets/types.d.ts.map +1 -1
  117. package/dist/apis/timetable/TimetableApi.cjs +6 -0
  118. package/dist/apis/timetable/TimetableApi.cjs.map +1 -1
  119. package/dist/apis/timetable/TimetableApi.d.ts +6 -0
  120. package/dist/apis/timetable/TimetableApi.d.ts.map +1 -1
  121. package/dist/apis/timetable/TimetableApi.mjs +6 -0
  122. package/dist/apis/timetable/TimetableApi.mjs.map +1 -1
  123. package/dist/apis/timetable/types.d.ts +8 -0
  124. package/dist/apis/timetable/types.d.ts.map +1 -1
  125. package/dist/apis/users/UsersApi.cjs +11 -3
  126. package/dist/apis/users/UsersApi.cjs.map +1 -1
  127. package/dist/apis/users/UsersApi.d.ts +10 -4
  128. package/dist/apis/users/UsersApi.d.ts.map +1 -1
  129. package/dist/apis/users/UsersApi.mjs +11 -3
  130. package/dist/apis/users/UsersApi.mjs.map +1 -1
  131. package/dist/apis/users/types.d.ts +26 -0
  132. package/dist/apis/users/types.d.ts.map +1 -1
  133. package/dist/apis/webhooks/types.d.ts +51 -6
  134. package/dist/apis/webhooks/types.d.ts.map +1 -1
  135. package/dist/core/errors.cjs +4 -1
  136. package/dist/core/errors.cjs.map +1 -1
  137. package/dist/core/errors.d.ts +4 -1
  138. package/dist/core/errors.d.ts.map +1 -1
  139. package/dist/core/errors.mjs +4 -1
  140. package/dist/core/errors.mjs.map +1 -1
  141. package/package.json +1 -1
  142. package/src/apis/absence/AbsenceApi.ts +2 -2
  143. package/src/apis/absence/types.ts +1 -1
  144. package/src/apis/answers/AnswersApi.test.ts +32 -0
  145. package/src/apis/answers/AnswersApi.ts +38 -2
  146. package/src/apis/answers/types.ts +1 -2
  147. package/src/apis/bots/BotsApi.test.ts +16 -0
  148. package/src/apis/bots/BotsApi.ts +25 -7
  149. package/src/apis/bots/types.ts +12 -2
  150. package/src/apis/campaigns/CampaignsApi.test.ts +48 -0
  151. package/src/apis/campaigns/CampaignsApi.ts +31 -2
  152. package/src/apis/campaigns/types.ts +101 -3
  153. package/src/apis/cards/types.ts +5 -5
  154. package/src/apis/categories/CategoriesApi.ts +1 -2
  155. package/src/apis/clientFeedback/ClientFeedbackApi.ts +2 -3
  156. package/src/apis/contacts/ContactsApi.test.ts +36 -2
  157. package/src/apis/contacts/ContactsApi.ts +41 -3
  158. package/src/apis/contacts/types.ts +28 -0
  159. package/src/apis/creditMovements/CreditMovementsApi.test.ts +1 -1
  160. package/src/apis/customFields/types.ts +4 -4
  161. package/src/apis/dashboard/DashboardApi.test-d.ts +9 -0
  162. package/src/apis/dashboard/DashboardApi.ts +3 -3
  163. package/src/apis/dashboard/types.ts +11 -4
  164. package/src/apis/departments/DepartmentsApi.ts +5 -5
  165. package/src/apis/departments/types.ts +13 -0
  166. package/src/apis/distribution/DistributionApi.ts +3 -4
  167. package/src/apis/kanbanCards/KanbanCardsApi.test.ts +21 -0
  168. package/src/apis/kanbanCards/KanbanCardsApi.ts +47 -1
  169. package/src/apis/kanbanCards/types.ts +1 -1
  170. package/src/apis/kanbanColumns/KanbanColumnsApi.test.ts +26 -0
  171. package/src/apis/kanbanColumns/KanbanColumnsApi.ts +31 -0
  172. package/src/apis/kanbanColumns/types.ts +5 -0
  173. package/src/apis/messages/MessagesApi.ts +13 -4
  174. package/src/apis/messages/types.ts +31 -0
  175. package/src/apis/payloads.test-d.ts +217 -4
  176. package/src/apis/pipeline/types.ts +7 -8
  177. package/src/apis/queryFormat.test.ts +13 -0
  178. package/src/apis/quickReplies/types.ts +4 -1
  179. package/src/apis/schedule/types.ts +42 -10
  180. package/src/apis/terms/TermsApi.ts +2 -2
  181. package/src/apis/tickets/TicketsApi.ts +28 -8
  182. package/src/apis/tickets/types.ts +4 -1
  183. package/src/apis/timetable/TimetableApi.ts +6 -0
  184. package/src/apis/timetable/types.ts +9 -0
  185. package/src/apis/users/UsersApi.test.ts +17 -0
  186. package/src/apis/users/UsersApi.ts +21 -3
  187. package/src/apis/users/types.ts +28 -0
  188. package/src/apis/webhooks/types.ts +53 -6
  189. package/src/core/errors.ts +4 -1
@@ -4,9 +4,8 @@ import type { ClientFeedback, CreateClientFeedbackPayload } from './types';
4
4
  export declare class ClientFeedbackApi extends BaseApi implements HasCreate<ClientFeedback, CreateClientFeedbackPayload> {
5
5
  private readonly basePath;
6
6
  /**
7
- * @deprecated The route is broken in the backend: it is mounted with no authentication (the
8
- * account context throws, 500) and calls a `createFeedback` the resource does not have. The
9
- * feedback on the AI summary is stored when the ticket is closed.
7
+ * @deprecated The route is not available (it answers 500). Send the rating of the AI summary
8
+ * when closing the ticket: `ContactsApi.closeTicket` with `aiSummaryRating`.
10
9
  */
11
10
  create(body: CreateClientFeedbackPayload, headers?: Record<string, string>): Promise<ClientFeedback>;
12
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClientFeedbackApi.d.ts","sourceRoot":"","sources":["../../../src/apis/clientFeedback/ClientFeedbackApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAE1E,qBAAa,iBACX,SAAQ,OACR,YAAW,SAAS,CAAC,cAAc,EAAE,2BAA2B,CAAC;IAEjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C;;;;OAIG;IACH,MAAM,CACJ,IAAI,EAAE,2BAA2B,EACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC;CAO3B"}
1
+ {"version":3,"file":"ClientFeedbackApi.d.ts","sourceRoot":"","sources":["../../../src/apis/clientFeedback/ClientFeedbackApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAE1E,qBAAa,iBACX,SAAQ,OACR,YAAW,SAAS,CAAC,cAAc,EAAE,2BAA2B,CAAC;IAEjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C;;;OAGG;IACH,MAAM,CACJ,IAAI,EAAE,2BAA2B,EACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC;CAO3B"}
@@ -4,9 +4,8 @@ import { BaseApi } from "../../core/BaseApi.mjs";
4
4
  var ClientFeedbackApi = class extends BaseApi {
5
5
  basePath = "/client-feedback";
6
6
  /**
7
- * @deprecated The route is broken in the backend: it is mounted with no authentication (the
8
- * account context throws, 500) and calls a `createFeedback` the resource does not have. The
9
- * feedback on the AI summary is stored when the ticket is closed.
7
+ * @deprecated The route is not available (it answers 500). Send the rating of the AI summary
8
+ * when closing the ticket: `ContactsApi.closeTicket` with `aiSummaryRating`.
10
9
  */
11
10
  create(body, headers) {
12
11
  return this.client.post(this.basePath, body, headers);
@@ -1 +1 @@
1
- {"version":3,"file":"ClientFeedbackApi.mjs","names":[],"sources":["../../../src/apis/clientFeedback/ClientFeedbackApi.ts"],"sourcesContent":["import { BaseApi } from '../../core/BaseApi'\nimport type { HasCreate } from '../../core/types'\nimport type { ClientFeedback, CreateClientFeedbackPayload } from './types'\n\nexport class ClientFeedbackApi\n extends BaseApi\n implements HasCreate<ClientFeedback, CreateClientFeedbackPayload>\n{\n private readonly basePath = '/client-feedback'\n\n /**\n * @deprecated The route is broken in the backend: it is mounted with no authentication (the\n * account context throws, 500) and calls a `createFeedback` the resource does not have. The\n * feedback on the AI summary is stored when the ticket is closed.\n */\n create(\n body: CreateClientFeedbackPayload,\n headers?: Record<string, string>,\n ): Promise<ClientFeedback> {\n return this.client.post<ClientFeedback, CreateClientFeedbackPayload>(\n this.basePath,\n body,\n headers,\n )\n }\n}\n"],"mappings":";;;AAIA,IAAa,oBAAb,cACU,QAEV;CACE,AAAiB,WAAW;;;;;;CAO5B,OACE,MACA,SACyB;AACzB,SAAO,KAAK,OAAO,KACjB,KAAK,UACL,MACA,QACD"}
1
+ {"version":3,"file":"ClientFeedbackApi.mjs","names":[],"sources":["../../../src/apis/clientFeedback/ClientFeedbackApi.ts"],"sourcesContent":["import { BaseApi } from '../../core/BaseApi'\nimport type { HasCreate } from '../../core/types'\nimport type { ClientFeedback, CreateClientFeedbackPayload } from './types'\n\nexport class ClientFeedbackApi\n extends BaseApi\n implements HasCreate<ClientFeedback, CreateClientFeedbackPayload>\n{\n private readonly basePath = '/client-feedback'\n\n /**\n * @deprecated The route is not available (it answers 500). Send the rating of the AI summary\n * when closing the ticket: `ContactsApi.closeTicket` with `aiSummaryRating`.\n */\n create(\n body: CreateClientFeedbackPayload,\n headers?: Record<string, string>,\n ): Promise<ClientFeedback> {\n return this.client.post<ClientFeedback, CreateClientFeedbackPayload>(\n this.basePath,\n body,\n headers,\n )\n }\n}\n"],"mappings":";;;AAIA,IAAa,oBAAb,cACU,QAEV;CACE,AAAiB,WAAW;;;;;CAM5B,OACE,MACA,SACyB;AACzB,SAAO,KAAK,OAAO,KACjB,KAAK,UACL,MACA,QACD"}
@@ -72,15 +72,19 @@ var ContactsApi = class extends require_core_BaseCrudApi.BaseCrudApi {
72
72
  list(body, headers) {
73
73
  return this.client.post(`${this.basePath}/list`, body, headers);
74
74
  }
75
- /**
76
- * Opens (or transfers) the contact's ticket to a department, and optionally a user.
77
- * This is the real ticket-open flow used by the UI — there is no `POST /tickets`.
78
- * @permissions tickets.transfer.all OR tickets.transfer.me
79
- */
80
75
  transferTicket(contactId, payload, headers) {
81
76
  return this.client.post(`${this.basePath}/${contactId}/ticket/transfer`, payload, headers);
82
77
  }
83
78
  /**
79
+ * Closes the open ticket of the contact and resolves `true`. A contact without an open ticket
80
+ * answers 500, or `true` (closing nothing) when its current ticket is already closed. An unknown
81
+ * subject in `ticketTopicIds`, or one of another department, answers 400.
82
+ * @permissions tickets.close.me OR tickets.close.all
83
+ */
84
+ closeTicket(contactId, payload = {}, headers) {
85
+ return this.client.post(`${this.basePath}/${contactId}/ticket/close`, payload, headers);
86
+ }
87
+ /**
84
88
  * Creates or updates several contacts in one call. Existing contacts (same service and
85
89
  * number or e-mail) are updated; the others are created. Returns the resulting contacts.
86
90
  * @permissions contacts.view OR contacts.update OR contacts.create
@@ -125,7 +129,7 @@ var ContactsApi = class extends require_core_BaseCrudApi.BaseCrudApi {
125
129
  /**
126
130
  * Blocks or unblocks a contact. Blocking closes the contact's open ticket. Requires the
127
131
  * block list to be active on the account (`settings.isBlockListActive`; 400 otherwise).
128
- * `byUserId` and `description` are stored as sent: the backend does not fill in the user.
132
+ * Send `byUserId` with the logged user (`id` of `MeApi.getMe`), as the web app does.
129
133
  * @permissions contacts.block
130
134
  */
131
135
  block(id, body, headers) {
@@ -1 +1 @@
1
- {"version":3,"file":"ContactsApi.cjs","names":["BaseCrudApi"],"sources":["../../../src/apis/contacts/ContactsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core/ApiClient'\nimport { BaseCrudApi } from '../../core/BaseCrudApi'\nimport type { ListQuery, Paginated } from '../../core/types'\nimport type {\n BlockContactPayload,\n BulkTransferTicketsPayload,\n BulkTransferTicketsResult,\n Contact,\n ContactGetByIdQuery,\n ContactListQuery,\n ContactMediaPage,\n ContactMediaQuery,\n ContactsSelection,\n CountContactsQuery,\n CountMediaResult,\n CreateContactPayload,\n CreateManyContactsItem,\n ExistsContactsParams,\n ExportCsvPayload,\n ExportTemplatePayload,\n ImportContactsPayload,\n SyncContactPayload,\n TransferTicketPayload,\n UpdateContactPayload,\n SummarizeTicketResult,\n} from './types'\n\nexport class ContactsApi extends BaseCrudApi<\n Contact,\n CreateContactPayload,\n UpdateContactPayload,\n ContactListQuery\n> {\n constructor(client: ApiClient) {\n super(client, '/contacts')\n }\n\n /**\n * Returns a contact by ID. When it does not exist the route answers 200 with an empty body, which\n * resolves to `undefined`. With `formatCustomFields: true` (and the include\n * `{ model: 'customFieldValues', include: ['customField'] }`), the custom fields come keyed by name\n * in `customFields`.\n * @permissions contacts.view\n */\n override getById(\n id: string,\n query?: ContactGetByIdQuery,\n headers?: Record<string, string>,\n ): Promise<Contact> {\n return super.getById(id, query, headers)\n }\n\n /**\n * Downloads the CSV template (`;`-separated header line, in the language of the user) for\n * importing contacts, with columns based on the service type. Answered with no Content-Type.\n * @permissions contacts.view AND contacts.export\n */\n exportTemplate(body: ExportTemplatePayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ExportTemplatePayload>(\n `${this.basePath}/export-template`,\n body,\n headers,\n )\n }\n\n /**\n * Returns the total number of contacts matching the given query filters.\n * @permissions contacts.view\n */\n count(query?: CountContactsQuery, headers?: Record<string, string>): Promise<{ count: number }> {\n const queryString = this.toQueryString(query)\n return this.client.get<{ count: number }>(`${this.basePath}/count${queryString}`, headers)\n }\n\n /**\n * Returns the total number of contacts matching the given filters (POST variant for complex queries).\n * @permissions contacts.view\n */\n countPost(\n body: CountContactsQuery,\n headers?: Record<string, string>,\n ): Promise<{ count: number }> {\n return this.client.post<{ count: number }, CountContactsQuery>(\n `${this.basePath}/count`,\n body,\n headers,\n )\n }\n\n /**\n * Returns a paginated list of contacts available for message forwarding.\n * @permissions contacts.view\n */\n forward(\n query?: ListQuery<Contact>,\n headers?: Record<string, string>,\n ): Promise<Paginated<Contact>> {\n const queryString = this.toQueryString(query)\n return this.client.get<Paginated<Contact>>(`${this.basePath}/forward${queryString}`, headers)\n }\n\n /**\n * Checks whether contacts exist for the given phone numbers on a specific service. Returns a map of number to boolean.\n * @permissions contacts.view\n */\n exists(\n params: ExistsContactsParams,\n headers?: Record<string, string>,\n ): Promise<Record<string, boolean>> {\n const queryString = `?${qs.stringify(params)}`\n return this.client.get<Record<string, boolean>>(\n `${this.basePath}/exists${queryString}`,\n headers,\n )\n }\n\n /**\n * Returns media counts grouped by type (e.g. image, video, document, link) for a contact.\n * @permissions contacts.view\n */\n countMedia(contactId: string, headers?: Record<string, string>): Promise<CountMediaResult> {\n return this.client.get<CountMediaResult>(`${this.basePath}/${contactId}/media/count`, headers)\n }\n\n /**\n * Returns a paginated list of contacts using POST body for advanced filtering.\n * @permissions contacts.view\n */\n list(\n body: Record<string, unknown>,\n headers?: Record<string, string>,\n ): Promise<Paginated<Contact>> {\n return this.client.post<Paginated<Contact>, Record<string, unknown>>(\n `${this.basePath}/list`,\n body,\n headers,\n )\n }\n\n /**\n * Opens (or transfers) the contact's ticket to a department, and optionally a user.\n * This is the real ticket-open flow used by the UI — there is no `POST /tickets`.\n * @permissions tickets.transfer.all OR tickets.transfer.me\n */\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload,\n headers?: Record<string, string>,\n ): Promise<unknown> {\n return this.client.post<unknown, TransferTicketPayload>(\n `${this.basePath}/${contactId}/ticket/transfer`,\n payload,\n headers,\n )\n }\n\n /**\n * Creates or updates several contacts in one call. Existing contacts (same service and\n * number or e-mail) are updated; the others are created. Returns the resulting contacts.\n * @permissions contacts.view OR contacts.update OR contacts.create\n */\n createMany(\n body: CreateManyContactsItem[],\n query?: ListQuery<Contact>,\n headers?: Record<string, string>,\n ): Promise<Contact[]> {\n const queryString = this.toQueryString(query)\n return this.client.post<Contact[], CreateManyContactsItem[]>(\n `${this.basePath}/many${queryString}`,\n body,\n headers,\n )\n }\n\n /**\n * Deletes every contact of the account that matches the selection.\n * @permissions contacts.view OR contacts.destroy\n */\n deleteMany(body: ContactsSelection, headers?: Record<string, string>): Promise<boolean> {\n return this.client.request<boolean, ContactsSelection>(\n 'DELETE',\n `${this.basePath}/many`,\n body,\n headers,\n )\n }\n\n /**\n * Exports the contacts that match the filter as CSV. Resolves to the CSV text.\n * @permissions contacts.view AND contacts.export\n */\n exportCsv(body: ExportCsvPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ExportCsvPayload>(`${this.basePath}/export/csv`, body, headers)\n }\n\n /**\n * Starts the import of a CSV file previously uploaded through `FilesApi`. The import runs\n * in the background; `csvHeaderLine` is validated against the service type template, with\n * every column of `exportTemplate` (including \"Criado em\"/\"Created at\"): a different header\n * answers 403 `Csv File - Invalid Header`. The file itself is only read by the job.\n * Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update OR contacts.create\n */\n importCsv(body: ImportContactsPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ImportContactsPayload>(\n `${this.basePath}/import-contacts`,\n body,\n headers,\n )\n }\n\n /**\n * Marks the contact as read and, when needed, syncs it with the messaging service.\n * Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update\n */\n sync(id: string, body?: SyncContactPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, SyncContactPayload>(\n `${this.basePath}/${id}/sync`,\n body ?? {},\n headers,\n )\n }\n\n /**\n * Blocks or unblocks a contact. Blocking closes the contact's open ticket. Requires the\n * block list to be active on the account (`settings.isBlockListActive`; 400 otherwise).\n * `byUserId` and `description` are stored as sent: the backend does not fill in the user.\n * @permissions contacts.block\n */\n block(id: string, body: BlockContactPayload, headers?: Record<string, string>): Promise<Contact> {\n return this.client.post<Contact, BlockContactPayload>(\n `${this.basePath}/${id}/block`,\n body,\n headers,\n )\n }\n\n /**\n * Generates an AI summary of the open ticket of the contact. Consumes AI credits; resolves\n * `{ success, limitReached? }`. A contact with no open ticket (or an unknown contact) answers\n * 400.\n * @permissions tickets.update\n */\n summarizeTicket(id: string, headers?: Record<string, string>): Promise<SummarizeTicketResult> {\n return this.client.post<SummarizeTicketResult>(\n `${this.basePath}/${id}/ticket/summary`,\n undefined,\n headers,\n )\n }\n\n /**\n * Resets the contact's unread counter. Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update\n */\n markRead(id: string, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string>(`${this.basePath}/${id}/mark-read`, undefined, headers)\n }\n\n /**\n * Returns the files and links exchanged with a contact, cursor-paginated.\n * @permissions contacts.view\n */\n getMedia(\n contactId: string,\n query?: ContactMediaQuery,\n headers?: Record<string, string>,\n ): Promise<ContactMediaPage> {\n const queryString = this.toQueryString(query)\n return this.client.get<ContactMediaPage>(\n `${this.basePath}/${contactId}/media${queryString}`,\n headers,\n )\n }\n\n /**\n * Transfers several tickets at once to a department and/or user.\n * @permissions tickets.transfer.all.bulk\n */\n bulkTransferTickets(\n body: BulkTransferTicketsPayload,\n headers?: Record<string, string>,\n ): Promise<BulkTransferTicketsResult> {\n return this.client.post<BulkTransferTicketsResult, BulkTransferTicketsPayload>(\n `${this.basePath}/ticket/bulk-transfer`,\n body,\n headers,\n )\n }\n}\n"],"mappings":";;;;;;;AA4BA,IAAa,cAAb,cAAiCA,qCAK/B;CACA,YAAY,QAAmB;AAC7B,QAAM,QAAQ,YAAY;;;;;;;;;CAU5B,AAAS,QACP,IACA,OACA,SACkB;AAClB,SAAO,MAAM,QAAQ,IAAI,OAAO,QAAQ;;;;;;;CAQ1C,eAAe,MAA6B,SAAmD;AAC7F,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,mBACjB,MACA,QACD;;;;;;CAOH,MAAM,OAA4B,SAA8D;EAC9F,MAAM,cAAc,KAAK,cAAc,MAAM;AAC7C,SAAO,KAAK,OAAO,IAAuB,GAAG,KAAK,SAAS,QAAQ,eAAe,QAAQ;;;;;;CAO5F,UACE,MACA,SAC4B;AAC5B,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,SACjB,MACA,QACD;;;;;;CAOH,QACE,OACA,SAC6B;EAC7B,MAAM,cAAc,KAAK,cAAc,MAAM;AAC7C,SAAO,KAAK,OAAO,IAAwB,GAAG,KAAK,SAAS,UAAU,eAAe,QAAQ;;;;;;CAO/F,OACE,QACA,SACkC;EAClC,MAAM,cAAc,IAAI,WAAG,UAAU,OAAO;AAC5C,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,SAAS,eAC1B,QACD;;;;;;CAOH,WAAW,WAAmB,SAA6D;AACzF,SAAO,KAAK,OAAO,IAAsB,GAAG,KAAK,SAAS,GAAG,UAAU,eAAe,QAAQ;;;;;;CAOhG,KACE,MACA,SAC6B;AAC7B,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,QACjB,MACA,QACD;;;;;;;CAQH,eACE,WACA,SACA,SACkB;AAClB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,UAAU,mBAC9B,SACA,QACD;;;;;;;CAQH,WACE,MACA,OACA,SACoB;EACpB,MAAM,cAAc,KAAK,cAAc,MAAM;AAC7C,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,OAAO,eACxB,MACA,QACD;;;;;;CAOH,WAAW,MAAyB,SAAoD;AACtF,SAAO,KAAK,OAAO,QACjB,UACA,GAAG,KAAK,SAAS,QACjB,MACA,QACD;;;;;;CAOH,UAAU,MAAwB,SAAmD;AACnF,SAAO,KAAK,OAAO,KAA+B,GAAG,KAAK,SAAS,cAAc,MAAM,QAAQ;;;;;;;;;;CAWjG,UAAU,MAA6B,SAAmD;AACxF,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,mBACjB,MACA,QACD;;;;;;;CAQH,KAAK,IAAY,MAA2B,SAAmD;AAC7F,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,QACvB,QAAQ,EAAE,EACV,QACD;;;;;;;;CASH,MAAM,IAAY,MAA2B,SAAoD;AAC/F,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,SACvB,MACA,QACD;;;;;;;;CASH,gBAAgB,IAAY,SAAkE;AAC5F,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,kBACvB,QACA,QACD;;;;;;CAOH,SAAS,IAAY,SAAmD;AACtE,SAAO,KAAK,OAAO,KAAa,GAAG,KAAK,SAAS,GAAG,GAAG,aAAa,QAAW,QAAQ;;;;;;CAOzF,SACE,WACA,OACA,SAC2B;EAC3B,MAAM,cAAc,KAAK,cAAc,MAAM;AAC7C,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,UAAU,QAAQ,eACtC,QACD;;;;;;CAOH,oBACE,MACA,SACoC;AACpC,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,wBACjB,MACA,QACD"}
1
+ {"version":3,"file":"ContactsApi.cjs","names":["BaseCrudApi"],"sources":["../../../src/apis/contacts/ContactsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core/ApiClient'\nimport { BaseCrudApi } from '../../core/BaseCrudApi'\nimport type { ListQuery, Paginated } from '../../core/types'\nimport type {\n BlockContactPayload,\n BulkTransferTicketsPayload,\n BulkTransferTicketsResult,\n CloseTicketPayload,\n Contact,\n ContactGetByIdQuery,\n ContactListQuery,\n ContactMediaPage,\n ContactMediaQuery,\n ContactsSelection,\n CountContactsQuery,\n CountMediaResult,\n CreateContactPayload,\n CreateManyContactsItem,\n ExistsContactsParams,\n ExportCsvPayload,\n ExportTemplatePayload,\n ImportContactsPayload,\n SyncContactPayload,\n TransferTicketKanbanCardResult,\n TransferTicketPayload,\n UpdateContactPayload,\n SummarizeTicketResult,\n} from './types'\n\nexport class ContactsApi extends BaseCrudApi<\n Contact,\n CreateContactPayload,\n UpdateContactPayload,\n ContactListQuery\n> {\n constructor(client: ApiClient) {\n super(client, '/contacts')\n }\n\n /**\n * Returns a contact by ID. When it does not exist the route answers 200 with an empty body, which\n * resolves to `undefined`. With `formatCustomFields: true` (and the include\n * `{ model: 'customFieldValues', include: ['customField'] }`), the custom fields come keyed by name\n * in `customFields`.\n * @permissions contacts.view\n */\n override getById(\n id: string,\n query?: ContactGetByIdQuery,\n headers?: Record<string, string>,\n ): Promise<Contact> {\n return super.getById(id, query, headers)\n }\n\n /**\n * Downloads the CSV template (`;`-separated header line, in the language of the user) for\n * importing contacts, with columns based on the service type. Answered with no Content-Type.\n * @permissions contacts.view AND contacts.export\n */\n exportTemplate(body: ExportTemplatePayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ExportTemplatePayload>(\n `${this.basePath}/export-template`,\n body,\n headers,\n )\n }\n\n /**\n * Returns the total number of contacts matching the given query filters.\n * @permissions contacts.view\n */\n count(query?: CountContactsQuery, headers?: Record<string, string>): Promise<{ count: number }> {\n const queryString = this.toQueryString(query)\n return this.client.get<{ count: number }>(`${this.basePath}/count${queryString}`, headers)\n }\n\n /**\n * Returns the total number of contacts matching the given filters (POST variant for complex queries).\n * @permissions contacts.view\n */\n countPost(\n body: CountContactsQuery,\n headers?: Record<string, string>,\n ): Promise<{ count: number }> {\n return this.client.post<{ count: number }, CountContactsQuery>(\n `${this.basePath}/count`,\n body,\n headers,\n )\n }\n\n /**\n * Returns a paginated list of contacts available for message forwarding.\n * @permissions contacts.view\n */\n forward(\n query?: ListQuery<Contact>,\n headers?: Record<string, string>,\n ): Promise<Paginated<Contact>> {\n const queryString = this.toQueryString(query)\n return this.client.get<Paginated<Contact>>(`${this.basePath}/forward${queryString}`, headers)\n }\n\n /**\n * Checks whether contacts exist for the given phone numbers on a specific service. Returns a map of number to boolean.\n * @permissions contacts.view\n */\n exists(\n params: ExistsContactsParams,\n headers?: Record<string, string>,\n ): Promise<Record<string, boolean>> {\n const queryString = `?${qs.stringify(params)}`\n return this.client.get<Record<string, boolean>>(\n `${this.basePath}/exists${queryString}`,\n headers,\n )\n }\n\n /**\n * Returns media counts grouped by type (e.g. image, video, document, link) for a contact.\n * @permissions contacts.view\n */\n countMedia(contactId: string, headers?: Record<string, string>): Promise<CountMediaResult> {\n return this.client.get<CountMediaResult>(`${this.basePath}/${contactId}/media/count`, headers)\n }\n\n /**\n * Returns a paginated list of contacts using POST body for advanced filtering.\n * @permissions contacts.view\n */\n list(\n body: Record<string, unknown>,\n headers?: Record<string, string>,\n ): Promise<Paginated<Contact>> {\n return this.client.post<Paginated<Contact>, Record<string, unknown>>(\n `${this.basePath}/list`,\n body,\n headers,\n )\n }\n\n /**\n * Opens (or transfers) the contact's ticket to a department, and optionally a user.\n * This is the real ticket-open flow used by the UI — there is no `POST /tickets`.\n * Resolves `true`, or `{ kanbanCardId }` with `includeKanbanCardId: true`. When the current\n * ticket of the contact is already closed, the call only releases it and opens nothing: call it\n * again to open a ticket.\n * @permissions tickets.transfer.all OR tickets.transfer.me\n */\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload & { includeKanbanCardId: true },\n headers?: Record<string, string>,\n ): Promise<TransferTicketKanbanCardResult>\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload & { includeKanbanCardId?: false },\n headers?: Record<string, string>,\n ): Promise<true>\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload,\n headers?: Record<string, string>,\n ): Promise<true | TransferTicketKanbanCardResult>\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload,\n headers?: Record<string, string>,\n ): Promise<true | TransferTicketKanbanCardResult> {\n return this.client.post<true | TransferTicketKanbanCardResult, TransferTicketPayload>(\n `${this.basePath}/${contactId}/ticket/transfer`,\n payload,\n headers,\n )\n }\n\n /**\n * Closes the open ticket of the contact and resolves `true`. A contact without an open ticket\n * answers 500, or `true` (closing nothing) when its current ticket is already closed. An unknown\n * subject in `ticketTopicIds`, or one of another department, answers 400.\n * @permissions tickets.close.me OR tickets.close.all\n */\n closeTicket(\n contactId: string,\n payload: CloseTicketPayload = {},\n headers?: Record<string, string>,\n ): Promise<true> {\n return this.client.post<true, CloseTicketPayload>(\n `${this.basePath}/${contactId}/ticket/close`,\n payload,\n headers,\n )\n }\n\n /**\n * Creates or updates several contacts in one call. Existing contacts (same service and\n * number or e-mail) are updated; the others are created. Returns the resulting contacts.\n * @permissions contacts.view OR contacts.update OR contacts.create\n */\n createMany(\n body: CreateManyContactsItem[],\n query?: ListQuery<Contact>,\n headers?: Record<string, string>,\n ): Promise<Contact[]> {\n const queryString = this.toQueryString(query)\n return this.client.post<Contact[], CreateManyContactsItem[]>(\n `${this.basePath}/many${queryString}`,\n body,\n headers,\n )\n }\n\n /**\n * Deletes every contact of the account that matches the selection.\n * @permissions contacts.view OR contacts.destroy\n */\n deleteMany(body: ContactsSelection, headers?: Record<string, string>): Promise<boolean> {\n return this.client.request<boolean, ContactsSelection>(\n 'DELETE',\n `${this.basePath}/many`,\n body,\n headers,\n )\n }\n\n /**\n * Exports the contacts that match the filter as CSV. Resolves to the CSV text.\n * @permissions contacts.view AND contacts.export\n */\n exportCsv(body: ExportCsvPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ExportCsvPayload>(`${this.basePath}/export/csv`, body, headers)\n }\n\n /**\n * Starts the import of a CSV file previously uploaded through `FilesApi`. The import runs\n * in the background; `csvHeaderLine` is validated against the service type template, with\n * every column of `exportTemplate` (including \"Criado em\"/\"Created at\"): a different header\n * answers 403 `Csv File - Invalid Header`. The file itself is only read by the job.\n * Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update OR contacts.create\n */\n importCsv(body: ImportContactsPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ImportContactsPayload>(\n `${this.basePath}/import-contacts`,\n body,\n headers,\n )\n }\n\n /**\n * Marks the contact as read and, when needed, syncs it with the messaging service.\n * Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update\n */\n sync(id: string, body?: SyncContactPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, SyncContactPayload>(\n `${this.basePath}/${id}/sync`,\n body ?? {},\n headers,\n )\n }\n\n /**\n * Blocks or unblocks a contact. Blocking closes the contact's open ticket. Requires the\n * block list to be active on the account (`settings.isBlockListActive`; 400 otherwise).\n * Send `byUserId` with the logged user (`id` of `MeApi.getMe`), as the web app does.\n * @permissions contacts.block\n */\n block(id: string, body: BlockContactPayload, headers?: Record<string, string>): Promise<Contact> {\n return this.client.post<Contact, BlockContactPayload>(\n `${this.basePath}/${id}/block`,\n body,\n headers,\n )\n }\n\n /**\n * Generates an AI summary of the open ticket of the contact. Consumes AI credits; resolves\n * `{ success, limitReached? }`. A contact with no open ticket (or an unknown contact) answers\n * 400.\n * @permissions tickets.update\n */\n summarizeTicket(id: string, headers?: Record<string, string>): Promise<SummarizeTicketResult> {\n return this.client.post<SummarizeTicketResult>(\n `${this.basePath}/${id}/ticket/summary`,\n undefined,\n headers,\n )\n }\n\n /**\n * Resets the contact's unread counter. Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update\n */\n markRead(id: string, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string>(`${this.basePath}/${id}/mark-read`, undefined, headers)\n }\n\n /**\n * Returns the files and links exchanged with a contact, cursor-paginated.\n * @permissions contacts.view\n */\n getMedia(\n contactId: string,\n query?: ContactMediaQuery,\n headers?: Record<string, string>,\n ): Promise<ContactMediaPage> {\n const queryString = this.toQueryString(query)\n return this.client.get<ContactMediaPage>(\n `${this.basePath}/${contactId}/media${queryString}`,\n headers,\n )\n }\n\n /**\n * Transfers several tickets at once to a department and/or user.\n * @permissions tickets.transfer.all.bulk\n */\n bulkTransferTickets(\n body: BulkTransferTicketsPayload,\n headers?: Record<string, string>,\n ): Promise<BulkTransferTicketsResult> {\n return this.client.post<BulkTransferTicketsResult, BulkTransferTicketsPayload>(\n `${this.basePath}/ticket/bulk-transfer`,\n body,\n headers,\n )\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { ApiClient } from '../../core/ApiClient';
2
2
  import { BaseCrudApi } from '../../core/BaseCrudApi';
3
3
  import type { ListQuery, Paginated } from '../../core/types';
4
- import type { BlockContactPayload, BulkTransferTicketsPayload, BulkTransferTicketsResult, Contact, ContactGetByIdQuery, ContactListQuery, ContactMediaPage, ContactMediaQuery, ContactsSelection, CountContactsQuery, CountMediaResult, CreateContactPayload, CreateManyContactsItem, ExistsContactsParams, ExportCsvPayload, ExportTemplatePayload, ImportContactsPayload, SyncContactPayload, TransferTicketPayload, UpdateContactPayload, SummarizeTicketResult } from './types';
4
+ import type { BlockContactPayload, BulkTransferTicketsPayload, BulkTransferTicketsResult, CloseTicketPayload, Contact, ContactGetByIdQuery, ContactListQuery, ContactMediaPage, ContactMediaQuery, ContactsSelection, CountContactsQuery, CountMediaResult, CreateContactPayload, CreateManyContactsItem, ExistsContactsParams, ExportCsvPayload, ExportTemplatePayload, ImportContactsPayload, SyncContactPayload, TransferTicketKanbanCardResult, TransferTicketPayload, UpdateContactPayload, SummarizeTicketResult } from './types';
5
5
  export declare class ContactsApi extends BaseCrudApi<Contact, CreateContactPayload, UpdateContactPayload, ContactListQuery> {
6
6
  constructor(client: ApiClient);
7
7
  /**
@@ -55,9 +55,25 @@ export declare class ContactsApi extends BaseCrudApi<Contact, CreateContactPaylo
55
55
  /**
56
56
  * Opens (or transfers) the contact's ticket to a department, and optionally a user.
57
57
  * This is the real ticket-open flow used by the UI — there is no `POST /tickets`.
58
+ * Resolves `true`, or `{ kanbanCardId }` with `includeKanbanCardId: true`. When the current
59
+ * ticket of the contact is already closed, the call only releases it and opens nothing: call it
60
+ * again to open a ticket.
58
61
  * @permissions tickets.transfer.all OR tickets.transfer.me
59
62
  */
60
- transferTicket(contactId: string, payload: TransferTicketPayload, headers?: Record<string, string>): Promise<unknown>;
63
+ transferTicket(contactId: string, payload: TransferTicketPayload & {
64
+ includeKanbanCardId: true;
65
+ }, headers?: Record<string, string>): Promise<TransferTicketKanbanCardResult>;
66
+ transferTicket(contactId: string, payload: TransferTicketPayload & {
67
+ includeKanbanCardId?: false;
68
+ }, headers?: Record<string, string>): Promise<true>;
69
+ transferTicket(contactId: string, payload: TransferTicketPayload, headers?: Record<string, string>): Promise<true | TransferTicketKanbanCardResult>;
70
+ /**
71
+ * Closes the open ticket of the contact and resolves `true`. A contact without an open ticket
72
+ * answers 500, or `true` (closing nothing) when its current ticket is already closed. An unknown
73
+ * subject in `ticketTopicIds`, or one of another department, answers 400.
74
+ * @permissions tickets.close.me OR tickets.close.all
75
+ */
76
+ closeTicket(contactId: string, payload?: CloseTicketPayload, headers?: Record<string, string>): Promise<true>;
61
77
  /**
62
78
  * Creates or updates several contacts in one call. Existing contacts (same service and
63
79
  * number or e-mail) are updated; the others are created. Returns the resulting contacts.
@@ -92,7 +108,7 @@ export declare class ContactsApi extends BaseCrudApi<Contact, CreateContactPaylo
92
108
  /**
93
109
  * Blocks or unblocks a contact. Blocking closes the contact's open ticket. Requires the
94
110
  * block list to be active on the account (`settings.isBlockListActive`; 400 otherwise).
95
- * `byUserId` and `description` are stored as sent: the backend does not fill in the user.
111
+ * Send `byUserId` with the logged user (`id` of `MeApi.getMe`), as the web app does.
96
112
  * @permissions contacts.block
97
113
  */
98
114
  block(id: string, body: BlockContactPayload, headers?: Record<string, string>): Promise<Contact>;
@@ -1 +1 @@
1
- {"version":3,"file":"ContactsApi.d.ts","sourceRoot":"","sources":["../../../src/apis/contacts/ContactsApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContactsApi.d.ts","sourceRoot":"","sources":["../../../src/apis/contacts/ContactsApi.ts"],"names":[],"mappings":"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"}
@@ -69,15 +69,19 @@ var ContactsApi = class extends BaseCrudApi {
69
69
  list(body, headers) {
70
70
  return this.client.post(`${this.basePath}/list`, body, headers);
71
71
  }
72
- /**
73
- * Opens (or transfers) the contact's ticket to a department, and optionally a user.
74
- * This is the real ticket-open flow used by the UI — there is no `POST /tickets`.
75
- * @permissions tickets.transfer.all OR tickets.transfer.me
76
- */
77
72
  transferTicket(contactId, payload, headers) {
78
73
  return this.client.post(`${this.basePath}/${contactId}/ticket/transfer`, payload, headers);
79
74
  }
80
75
  /**
76
+ * Closes the open ticket of the contact and resolves `true`. A contact without an open ticket
77
+ * answers 500, or `true` (closing nothing) when its current ticket is already closed. An unknown
78
+ * subject in `ticketTopicIds`, or one of another department, answers 400.
79
+ * @permissions tickets.close.me OR tickets.close.all
80
+ */
81
+ closeTicket(contactId, payload = {}, headers) {
82
+ return this.client.post(`${this.basePath}/${contactId}/ticket/close`, payload, headers);
83
+ }
84
+ /**
81
85
  * Creates or updates several contacts in one call. Existing contacts (same service and
82
86
  * number or e-mail) are updated; the others are created. Returns the resulting contacts.
83
87
  * @permissions contacts.view OR contacts.update OR contacts.create
@@ -122,7 +126,7 @@ var ContactsApi = class extends BaseCrudApi {
122
126
  /**
123
127
  * Blocks or unblocks a contact. Blocking closes the contact's open ticket. Requires the
124
128
  * block list to be active on the account (`settings.isBlockListActive`; 400 otherwise).
125
- * `byUserId` and `description` are stored as sent: the backend does not fill in the user.
129
+ * Send `byUserId` with the logged user (`id` of `MeApi.getMe`), as the web app does.
126
130
  * @permissions contacts.block
127
131
  */
128
132
  block(id, body, headers) {
@@ -1 +1 @@
1
- {"version":3,"file":"ContactsApi.mjs","names":[],"sources":["../../../src/apis/contacts/ContactsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core/ApiClient'\nimport { BaseCrudApi } from '../../core/BaseCrudApi'\nimport type { ListQuery, Paginated } from '../../core/types'\nimport type {\n BlockContactPayload,\n BulkTransferTicketsPayload,\n BulkTransferTicketsResult,\n Contact,\n ContactGetByIdQuery,\n ContactListQuery,\n ContactMediaPage,\n ContactMediaQuery,\n ContactsSelection,\n CountContactsQuery,\n CountMediaResult,\n CreateContactPayload,\n CreateManyContactsItem,\n ExistsContactsParams,\n ExportCsvPayload,\n ExportTemplatePayload,\n ImportContactsPayload,\n SyncContactPayload,\n TransferTicketPayload,\n UpdateContactPayload,\n SummarizeTicketResult,\n} from './types'\n\nexport class ContactsApi extends BaseCrudApi<\n Contact,\n CreateContactPayload,\n UpdateContactPayload,\n ContactListQuery\n> {\n constructor(client: ApiClient) {\n super(client, '/contacts')\n }\n\n /**\n * Returns a contact by ID. When it does not exist the route answers 200 with an empty body, which\n * resolves to `undefined`. With `formatCustomFields: true` (and the include\n * `{ model: 'customFieldValues', include: ['customField'] }`), the custom fields come keyed by name\n * in `customFields`.\n * @permissions contacts.view\n */\n override getById(\n id: string,\n query?: ContactGetByIdQuery,\n headers?: Record<string, string>,\n ): Promise<Contact> {\n return super.getById(id, query, headers)\n }\n\n /**\n * Downloads the CSV template (`;`-separated header line, in the language of the user) for\n * importing contacts, with columns based on the service type. Answered with no Content-Type.\n * @permissions contacts.view AND contacts.export\n */\n exportTemplate(body: ExportTemplatePayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ExportTemplatePayload>(\n `${this.basePath}/export-template`,\n body,\n headers,\n )\n }\n\n /**\n * Returns the total number of contacts matching the given query filters.\n * @permissions contacts.view\n */\n count(query?: CountContactsQuery, headers?: Record<string, string>): Promise<{ count: number }> {\n const queryString = this.toQueryString(query)\n return this.client.get<{ count: number }>(`${this.basePath}/count${queryString}`, headers)\n }\n\n /**\n * Returns the total number of contacts matching the given filters (POST variant for complex queries).\n * @permissions contacts.view\n */\n countPost(\n body: CountContactsQuery,\n headers?: Record<string, string>,\n ): Promise<{ count: number }> {\n return this.client.post<{ count: number }, CountContactsQuery>(\n `${this.basePath}/count`,\n body,\n headers,\n )\n }\n\n /**\n * Returns a paginated list of contacts available for message forwarding.\n * @permissions contacts.view\n */\n forward(\n query?: ListQuery<Contact>,\n headers?: Record<string, string>,\n ): Promise<Paginated<Contact>> {\n const queryString = this.toQueryString(query)\n return this.client.get<Paginated<Contact>>(`${this.basePath}/forward${queryString}`, headers)\n }\n\n /**\n * Checks whether contacts exist for the given phone numbers on a specific service. Returns a map of number to boolean.\n * @permissions contacts.view\n */\n exists(\n params: ExistsContactsParams,\n headers?: Record<string, string>,\n ): Promise<Record<string, boolean>> {\n const queryString = `?${qs.stringify(params)}`\n return this.client.get<Record<string, boolean>>(\n `${this.basePath}/exists${queryString}`,\n headers,\n )\n }\n\n /**\n * Returns media counts grouped by type (e.g. image, video, document, link) for a contact.\n * @permissions contacts.view\n */\n countMedia(contactId: string, headers?: Record<string, string>): Promise<CountMediaResult> {\n return this.client.get<CountMediaResult>(`${this.basePath}/${contactId}/media/count`, headers)\n }\n\n /**\n * Returns a paginated list of contacts using POST body for advanced filtering.\n * @permissions contacts.view\n */\n list(\n body: Record<string, unknown>,\n headers?: Record<string, string>,\n ): Promise<Paginated<Contact>> {\n return this.client.post<Paginated<Contact>, Record<string, unknown>>(\n `${this.basePath}/list`,\n body,\n headers,\n )\n }\n\n /**\n * Opens (or transfers) the contact's ticket to a department, and optionally a user.\n * This is the real ticket-open flow used by the UI — there is no `POST /tickets`.\n * @permissions tickets.transfer.all OR tickets.transfer.me\n */\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload,\n headers?: Record<string, string>,\n ): Promise<unknown> {\n return this.client.post<unknown, TransferTicketPayload>(\n `${this.basePath}/${contactId}/ticket/transfer`,\n payload,\n headers,\n )\n }\n\n /**\n * Creates or updates several contacts in one call. Existing contacts (same service and\n * number or e-mail) are updated; the others are created. Returns the resulting contacts.\n * @permissions contacts.view OR contacts.update OR contacts.create\n */\n createMany(\n body: CreateManyContactsItem[],\n query?: ListQuery<Contact>,\n headers?: Record<string, string>,\n ): Promise<Contact[]> {\n const queryString = this.toQueryString(query)\n return this.client.post<Contact[], CreateManyContactsItem[]>(\n `${this.basePath}/many${queryString}`,\n body,\n headers,\n )\n }\n\n /**\n * Deletes every contact of the account that matches the selection.\n * @permissions contacts.view OR contacts.destroy\n */\n deleteMany(body: ContactsSelection, headers?: Record<string, string>): Promise<boolean> {\n return this.client.request<boolean, ContactsSelection>(\n 'DELETE',\n `${this.basePath}/many`,\n body,\n headers,\n )\n }\n\n /**\n * Exports the contacts that match the filter as CSV. Resolves to the CSV text.\n * @permissions contacts.view AND contacts.export\n */\n exportCsv(body: ExportCsvPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ExportCsvPayload>(`${this.basePath}/export/csv`, body, headers)\n }\n\n /**\n * Starts the import of a CSV file previously uploaded through `FilesApi`. The import runs\n * in the background; `csvHeaderLine` is validated against the service type template, with\n * every column of `exportTemplate` (including \"Criado em\"/\"Created at\"): a different header\n * answers 403 `Csv File - Invalid Header`. The file itself is only read by the job.\n * Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update OR contacts.create\n */\n importCsv(body: ImportContactsPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ImportContactsPayload>(\n `${this.basePath}/import-contacts`,\n body,\n headers,\n )\n }\n\n /**\n * Marks the contact as read and, when needed, syncs it with the messaging service.\n * Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update\n */\n sync(id: string, body?: SyncContactPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, SyncContactPayload>(\n `${this.basePath}/${id}/sync`,\n body ?? {},\n headers,\n )\n }\n\n /**\n * Blocks or unblocks a contact. Blocking closes the contact's open ticket. Requires the\n * block list to be active on the account (`settings.isBlockListActive`; 400 otherwise).\n * `byUserId` and `description` are stored as sent: the backend does not fill in the user.\n * @permissions contacts.block\n */\n block(id: string, body: BlockContactPayload, headers?: Record<string, string>): Promise<Contact> {\n return this.client.post<Contact, BlockContactPayload>(\n `${this.basePath}/${id}/block`,\n body,\n headers,\n )\n }\n\n /**\n * Generates an AI summary of the open ticket of the contact. Consumes AI credits; resolves\n * `{ success, limitReached? }`. A contact with no open ticket (or an unknown contact) answers\n * 400.\n * @permissions tickets.update\n */\n summarizeTicket(id: string, headers?: Record<string, string>): Promise<SummarizeTicketResult> {\n return this.client.post<SummarizeTicketResult>(\n `${this.basePath}/${id}/ticket/summary`,\n undefined,\n headers,\n )\n }\n\n /**\n * Resets the contact's unread counter. Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update\n */\n markRead(id: string, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string>(`${this.basePath}/${id}/mark-read`, undefined, headers)\n }\n\n /**\n * Returns the files and links exchanged with a contact, cursor-paginated.\n * @permissions contacts.view\n */\n getMedia(\n contactId: string,\n query?: ContactMediaQuery,\n headers?: Record<string, string>,\n ): Promise<ContactMediaPage> {\n const queryString = this.toQueryString(query)\n return this.client.get<ContactMediaPage>(\n `${this.basePath}/${contactId}/media${queryString}`,\n headers,\n )\n }\n\n /**\n * Transfers several tickets at once to a department and/or user.\n * @permissions tickets.transfer.all.bulk\n */\n bulkTransferTickets(\n body: BulkTransferTicketsPayload,\n headers?: Record<string, string>,\n ): Promise<BulkTransferTicketsResult> {\n return this.client.post<BulkTransferTicketsResult, BulkTransferTicketsPayload>(\n `${this.basePath}/ticket/bulk-transfer`,\n body,\n headers,\n )\n }\n}\n"],"mappings":";;;;AA4BA,IAAa,cAAb,cAAiC,YAK/B;CACA,YAAY,QAAmB;AAC7B,QAAM,QAAQ,YAAY;;;;;;;;;CAU5B,AAAS,QACP,IACA,OACA,SACkB;AAClB,SAAO,MAAM,QAAQ,IAAI,OAAO,QAAQ;;;;;;;CAQ1C,eAAe,MAA6B,SAAmD;AAC7F,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,mBACjB,MACA,QACD;;;;;;CAOH,MAAM,OAA4B,SAA8D;EAC9F,MAAM,cAAc,KAAK,cAAc,MAAM;AAC7C,SAAO,KAAK,OAAO,IAAuB,GAAG,KAAK,SAAS,QAAQ,eAAe,QAAQ;;;;;;CAO5F,UACE,MACA,SAC4B;AAC5B,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,SACjB,MACA,QACD;;;;;;CAOH,QACE,OACA,SAC6B;EAC7B,MAAM,cAAc,KAAK,cAAc,MAAM;AAC7C,SAAO,KAAK,OAAO,IAAwB,GAAG,KAAK,SAAS,UAAU,eAAe,QAAQ;;;;;;CAO/F,OACE,QACA,SACkC;EAClC,MAAM,cAAc,IAAI,GAAG,UAAU,OAAO;AAC5C,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,SAAS,eAC1B,QACD;;;;;;CAOH,WAAW,WAAmB,SAA6D;AACzF,SAAO,KAAK,OAAO,IAAsB,GAAG,KAAK,SAAS,GAAG,UAAU,eAAe,QAAQ;;;;;;CAOhG,KACE,MACA,SAC6B;AAC7B,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,QACjB,MACA,QACD;;;;;;;CAQH,eACE,WACA,SACA,SACkB;AAClB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,UAAU,mBAC9B,SACA,QACD;;;;;;;CAQH,WACE,MACA,OACA,SACoB;EACpB,MAAM,cAAc,KAAK,cAAc,MAAM;AAC7C,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,OAAO,eACxB,MACA,QACD;;;;;;CAOH,WAAW,MAAyB,SAAoD;AACtF,SAAO,KAAK,OAAO,QACjB,UACA,GAAG,KAAK,SAAS,QACjB,MACA,QACD;;;;;;CAOH,UAAU,MAAwB,SAAmD;AACnF,SAAO,KAAK,OAAO,KAA+B,GAAG,KAAK,SAAS,cAAc,MAAM,QAAQ;;;;;;;;;;CAWjG,UAAU,MAA6B,SAAmD;AACxF,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,mBACjB,MACA,QACD;;;;;;;CAQH,KAAK,IAAY,MAA2B,SAAmD;AAC7F,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,QACvB,QAAQ,EAAE,EACV,QACD;;;;;;;;CASH,MAAM,IAAY,MAA2B,SAAoD;AAC/F,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,SACvB,MACA,QACD;;;;;;;;CASH,gBAAgB,IAAY,SAAkE;AAC5F,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,kBACvB,QACA,QACD;;;;;;CAOH,SAAS,IAAY,SAAmD;AACtE,SAAO,KAAK,OAAO,KAAa,GAAG,KAAK,SAAS,GAAG,GAAG,aAAa,QAAW,QAAQ;;;;;;CAOzF,SACE,WACA,OACA,SAC2B;EAC3B,MAAM,cAAc,KAAK,cAAc,MAAM;AAC7C,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,UAAU,QAAQ,eACtC,QACD;;;;;;CAOH,oBACE,MACA,SACoC;AACpC,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,wBACjB,MACA,QACD"}
1
+ {"version":3,"file":"ContactsApi.mjs","names":[],"sources":["../../../src/apis/contacts/ContactsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core/ApiClient'\nimport { BaseCrudApi } from '../../core/BaseCrudApi'\nimport type { ListQuery, Paginated } from '../../core/types'\nimport type {\n BlockContactPayload,\n BulkTransferTicketsPayload,\n BulkTransferTicketsResult,\n CloseTicketPayload,\n Contact,\n ContactGetByIdQuery,\n ContactListQuery,\n ContactMediaPage,\n ContactMediaQuery,\n ContactsSelection,\n CountContactsQuery,\n CountMediaResult,\n CreateContactPayload,\n CreateManyContactsItem,\n ExistsContactsParams,\n ExportCsvPayload,\n ExportTemplatePayload,\n ImportContactsPayload,\n SyncContactPayload,\n TransferTicketKanbanCardResult,\n TransferTicketPayload,\n UpdateContactPayload,\n SummarizeTicketResult,\n} from './types'\n\nexport class ContactsApi extends BaseCrudApi<\n Contact,\n CreateContactPayload,\n UpdateContactPayload,\n ContactListQuery\n> {\n constructor(client: ApiClient) {\n super(client, '/contacts')\n }\n\n /**\n * Returns a contact by ID. When it does not exist the route answers 200 with an empty body, which\n * resolves to `undefined`. With `formatCustomFields: true` (and the include\n * `{ model: 'customFieldValues', include: ['customField'] }`), the custom fields come keyed by name\n * in `customFields`.\n * @permissions contacts.view\n */\n override getById(\n id: string,\n query?: ContactGetByIdQuery,\n headers?: Record<string, string>,\n ): Promise<Contact> {\n return super.getById(id, query, headers)\n }\n\n /**\n * Downloads the CSV template (`;`-separated header line, in the language of the user) for\n * importing contacts, with columns based on the service type. Answered with no Content-Type.\n * @permissions contacts.view AND contacts.export\n */\n exportTemplate(body: ExportTemplatePayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ExportTemplatePayload>(\n `${this.basePath}/export-template`,\n body,\n headers,\n )\n }\n\n /**\n * Returns the total number of contacts matching the given query filters.\n * @permissions contacts.view\n */\n count(query?: CountContactsQuery, headers?: Record<string, string>): Promise<{ count: number }> {\n const queryString = this.toQueryString(query)\n return this.client.get<{ count: number }>(`${this.basePath}/count${queryString}`, headers)\n }\n\n /**\n * Returns the total number of contacts matching the given filters (POST variant for complex queries).\n * @permissions contacts.view\n */\n countPost(\n body: CountContactsQuery,\n headers?: Record<string, string>,\n ): Promise<{ count: number }> {\n return this.client.post<{ count: number }, CountContactsQuery>(\n `${this.basePath}/count`,\n body,\n headers,\n )\n }\n\n /**\n * Returns a paginated list of contacts available for message forwarding.\n * @permissions contacts.view\n */\n forward(\n query?: ListQuery<Contact>,\n headers?: Record<string, string>,\n ): Promise<Paginated<Contact>> {\n const queryString = this.toQueryString(query)\n return this.client.get<Paginated<Contact>>(`${this.basePath}/forward${queryString}`, headers)\n }\n\n /**\n * Checks whether contacts exist for the given phone numbers on a specific service. Returns a map of number to boolean.\n * @permissions contacts.view\n */\n exists(\n params: ExistsContactsParams,\n headers?: Record<string, string>,\n ): Promise<Record<string, boolean>> {\n const queryString = `?${qs.stringify(params)}`\n return this.client.get<Record<string, boolean>>(\n `${this.basePath}/exists${queryString}`,\n headers,\n )\n }\n\n /**\n * Returns media counts grouped by type (e.g. image, video, document, link) for a contact.\n * @permissions contacts.view\n */\n countMedia(contactId: string, headers?: Record<string, string>): Promise<CountMediaResult> {\n return this.client.get<CountMediaResult>(`${this.basePath}/${contactId}/media/count`, headers)\n }\n\n /**\n * Returns a paginated list of contacts using POST body for advanced filtering.\n * @permissions contacts.view\n */\n list(\n body: Record<string, unknown>,\n headers?: Record<string, string>,\n ): Promise<Paginated<Contact>> {\n return this.client.post<Paginated<Contact>, Record<string, unknown>>(\n `${this.basePath}/list`,\n body,\n headers,\n )\n }\n\n /**\n * Opens (or transfers) the contact's ticket to a department, and optionally a user.\n * This is the real ticket-open flow used by the UI — there is no `POST /tickets`.\n * Resolves `true`, or `{ kanbanCardId }` with `includeKanbanCardId: true`. When the current\n * ticket of the contact is already closed, the call only releases it and opens nothing: call it\n * again to open a ticket.\n * @permissions tickets.transfer.all OR tickets.transfer.me\n */\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload & { includeKanbanCardId: true },\n headers?: Record<string, string>,\n ): Promise<TransferTicketKanbanCardResult>\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload & { includeKanbanCardId?: false },\n headers?: Record<string, string>,\n ): Promise<true>\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload,\n headers?: Record<string, string>,\n ): Promise<true | TransferTicketKanbanCardResult>\n transferTicket(\n contactId: string,\n payload: TransferTicketPayload,\n headers?: Record<string, string>,\n ): Promise<true | TransferTicketKanbanCardResult> {\n return this.client.post<true | TransferTicketKanbanCardResult, TransferTicketPayload>(\n `${this.basePath}/${contactId}/ticket/transfer`,\n payload,\n headers,\n )\n }\n\n /**\n * Closes the open ticket of the contact and resolves `true`. A contact without an open ticket\n * answers 500, or `true` (closing nothing) when its current ticket is already closed. An unknown\n * subject in `ticketTopicIds`, or one of another department, answers 400.\n * @permissions tickets.close.me OR tickets.close.all\n */\n closeTicket(\n contactId: string,\n payload: CloseTicketPayload = {},\n headers?: Record<string, string>,\n ): Promise<true> {\n return this.client.post<true, CloseTicketPayload>(\n `${this.basePath}/${contactId}/ticket/close`,\n payload,\n headers,\n )\n }\n\n /**\n * Creates or updates several contacts in one call. Existing contacts (same service and\n * number or e-mail) are updated; the others are created. Returns the resulting contacts.\n * @permissions contacts.view OR contacts.update OR contacts.create\n */\n createMany(\n body: CreateManyContactsItem[],\n query?: ListQuery<Contact>,\n headers?: Record<string, string>,\n ): Promise<Contact[]> {\n const queryString = this.toQueryString(query)\n return this.client.post<Contact[], CreateManyContactsItem[]>(\n `${this.basePath}/many${queryString}`,\n body,\n headers,\n )\n }\n\n /**\n * Deletes every contact of the account that matches the selection.\n * @permissions contacts.view OR contacts.destroy\n */\n deleteMany(body: ContactsSelection, headers?: Record<string, string>): Promise<boolean> {\n return this.client.request<boolean, ContactsSelection>(\n 'DELETE',\n `${this.basePath}/many`,\n body,\n headers,\n )\n }\n\n /**\n * Exports the contacts that match the filter as CSV. Resolves to the CSV text.\n * @permissions contacts.view AND contacts.export\n */\n exportCsv(body: ExportCsvPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ExportCsvPayload>(`${this.basePath}/export/csv`, body, headers)\n }\n\n /**\n * Starts the import of a CSV file previously uploaded through `FilesApi`. The import runs\n * in the background; `csvHeaderLine` is validated against the service type template, with\n * every column of `exportTemplate` (including \"Criado em\"/\"Created at\"): a different header\n * answers 403 `Csv File - Invalid Header`. The file itself is only read by the job.\n * Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update OR contacts.create\n */\n importCsv(body: ImportContactsPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, ImportContactsPayload>(\n `${this.basePath}/import-contacts`,\n body,\n headers,\n )\n }\n\n /**\n * Marks the contact as read and, when needed, syncs it with the messaging service.\n * Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update\n */\n sync(id: string, body?: SyncContactPayload, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string, SyncContactPayload>(\n `${this.basePath}/${id}/sync`,\n body ?? {},\n headers,\n )\n }\n\n /**\n * Blocks or unblocks a contact. Blocking closes the contact's open ticket. Requires the\n * block list to be active on the account (`settings.isBlockListActive`; 400 otherwise).\n * Send `byUserId` with the logged user (`id` of `MeApi.getMe`), as the web app does.\n * @permissions contacts.block\n */\n block(id: string, body: BlockContactPayload, headers?: Record<string, string>): Promise<Contact> {\n return this.client.post<Contact, BlockContactPayload>(\n `${this.basePath}/${id}/block`,\n body,\n headers,\n )\n }\n\n /**\n * Generates an AI summary of the open ticket of the contact. Consumes AI credits; resolves\n * `{ success, limitReached? }`. A contact with no open ticket (or an unknown contact) answers\n * 400.\n * @permissions tickets.update\n */\n summarizeTicket(id: string, headers?: Record<string, string>): Promise<SummarizeTicketResult> {\n return this.client.post<SummarizeTicketResult>(\n `${this.basePath}/${id}/ticket/summary`,\n undefined,\n headers,\n )\n }\n\n /**\n * Resets the contact's unread counter. Resolves to `'OK'`.\n * @permissions contacts.view OR contacts.update\n */\n markRead(id: string, headers?: Record<string, string>): Promise<string> {\n return this.client.post<string>(`${this.basePath}/${id}/mark-read`, undefined, headers)\n }\n\n /**\n * Returns the files and links exchanged with a contact, cursor-paginated.\n * @permissions contacts.view\n */\n getMedia(\n contactId: string,\n query?: ContactMediaQuery,\n headers?: Record<string, string>,\n ): Promise<ContactMediaPage> {\n const queryString = this.toQueryString(query)\n return this.client.get<ContactMediaPage>(\n `${this.basePath}/${contactId}/media${queryString}`,\n headers,\n )\n }\n\n /**\n * Transfers several tickets at once to a department and/or user.\n * @permissions tickets.transfer.all.bulk\n */\n bulkTransferTickets(\n body: BulkTransferTicketsPayload,\n headers?: Record<string, string>,\n ): Promise<BulkTransferTicketsResult> {\n return this.client.post<BulkTransferTicketsResult, BulkTransferTicketsPayload>(\n `${this.basePath}/ticket/bulk-transfer`,\n body,\n headers,\n )\n }\n}\n"],"mappings":"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"}
@@ -268,6 +268,31 @@ export type TransferTicketPayload = {
268
268
  kanbanCardColumnId?: string;
269
269
  kanbanCardSubject?: string;
270
270
  initialMessage?: string;
271
+ /** `true` (the boolean) resolves the id of the kanban card instead of `true`. */
272
+ includeKanbanCardId?: boolean;
273
+ };
274
+ /** What `ContactsApi.transferTicket` resolves to with `includeKanbanCardId: true`. */
275
+ export type TransferTicketKanbanCardResult = {
276
+ /**
277
+ * The kanban card of the ticket (created, or the contact's card moved, in `kanbanCardColumnId`);
278
+ * `null` without `kanbanCardColumnId` (even when the ticket gets a card in the initial column of
279
+ * the board: send `kanbanCardColumnId` to read its id), when the department has no board, or when
280
+ * the call only released a closed ticket.
281
+ */
282
+ kanbanCardId: string | null;
283
+ };
284
+ /** The rating of the AI summary of the ticket. */
285
+ export type AiSummaryRating = '1' | '2' | '3' | '4' | '5';
286
+ export type CloseTicketPayload = {
287
+ /**
288
+ * Subjects of the ticket: of its department, or linked to no department. An unknown subject, or
289
+ * one of another department, answers 400.
290
+ */
291
+ ticketTopicIds?: string[];
292
+ /** The closing comment. */
293
+ comments?: string;
294
+ /** Stored as the feedback of the AI summary of the ticket. */
295
+ aiSummaryRating?: AiSummaryRating;
271
296
  };
272
297
  /**
273
298
  * One item of `POST /contacts/many`. The backend matches existing contacts by service and
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/contacts/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/contacts/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEzF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAC3D,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEpF,MAAM,MAAM,WAAW,GAAG;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,uCAAuC;IACvC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IACpD,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE;YACX,CAAC,CAAC,EAAE,MAAM,CAAA;YACV,CAAC,CAAC,EAAE,MAAM,CAAA;YACV,CAAC,CAAC,EAAE,MAAM,CAAA;SACX,CAAA;QACD,gBAAgB,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;SAAE,CAAA;QAChE,mBAAmB,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;SAAE,CAAA;QACnE,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,eAAe,CAAC,EAAE,OAAO,CAAA;KAC1B,CAAA;IACD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE;QAClB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;QAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAC7B,CAAA;IACD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE;QACd,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAA;QACpC,sBAAsB,CAAC,EAAE,OAAO,CAAA;QAChC,0BAA0B,CAAC,EAAE,OAAO,CAAA;QACpC,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;OAMG;IACH,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,2DAA2D;IAC3D,KAAK,EAAE,OAAO,CAAA;IACd,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,eAAe,CAAA;IACrB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAA;IACV,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAClC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iBAAiB,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACrC,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACtC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,mBAAmB,GACnB,aAAa,GACb,QAAQ,GACR,MAAM,GACN,eAAe,GACf,mBAAmB,GACnB,cAAc,CAAA;AAElB,KAAK,wBAAwB,GAAG;IAC9B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,sCAAsC;AACtC,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,wBAAwB,CAAA;AAElF,mDAAmD;AACnD,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,wBAAwB,CAAA;AAE5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,gGAAgG;IAChG,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAA;CACzC,CAAA;AAED,+CAA+C;AAC/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG;IACpD,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAErD;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,sFAAsF;AACtF,MAAM,MAAM,8BAA8B,GAAG;IAC3C;;;;;OAKG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B,CAAA;AAED,kDAAkD;AAClD,MAAM,MAAM,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAEzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,mGAAmG;IACnG,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;CACF,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACvC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEhE,4CAA4C;AAC5C,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG;IAC5E,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,CAAA;IACnD,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,wDAAwD;QACxD,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,IAAI,EAAE,eAAe,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,sFAAsF;AACtF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,0CAA0C;AAC1C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAA;AAE5D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE;QACN,6EAA6E;QAC7E,IAAI,CAAC,EAAE,gBAAgB,CAAA;QACvB,gEAAgE;QAChE,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;CACpD,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,OAAO,CAAA;IACrB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,gBAAgB,EAAE,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B,CAAA;AAED,sDAAsD;AACtD,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA"}
@@ -4,10 +4,10 @@ export type CustomFieldOption = {
4
4
  label?: string | null;
5
5
  };
6
6
  /**
7
- * Settings of a custom field — a free JSONB the backend does not validate, echoed back as sent.
8
- * The fields below are the ones the web app form sends (`front/src/pages/custom-fields/components/
9
- * form.tsx`): `options` for the `list` and `checkbox` types, `min`/`max` for `numeric` and `monetary`,
10
- * `currency` for `monetary`, `maxLength` for `text` and `long-text`, and `placeholder` for the inputs.
7
+ * Settings of a custom field (a free JSON object, answered as stored). The fields below are the
8
+ * ones the web app form sends: `options` for the `list` and `checkbox` types, `min`/`max` for
9
+ * `numeric` and `monetary`, `currency` for `monetary`, `maxLength` for `text` and `long-text`, and
10
+ * `placeholder` for the inputs.
11
11
  */
12
12
  export type CustomFieldSettings = {
13
13
  options?: CustomFieldOption[];
@@ -3,9 +3,9 @@ const require_core_BaseApi = require('../../core/BaseApi.cjs');
3
3
 
4
4
  //#region src/apis/dashboard/DashboardApi.ts
5
5
  /**
6
- * Service statistics ("Estatísticas de atendimento"). The `/dashboard` routes only require an
7
- * authenticated user (no permission check). Every route takes the same {@link DashboardQuery}
8
- * filters; the grouped routes answer one item per day, user, department, topic or connection.
6
+ * Service statistics ("Estatísticas de atendimento"). Every route takes the same
7
+ * {@link DashboardQuery} filters; the grouped routes answer one item per day, user, department,
8
+ * topic or connection.
9
9
  */
10
10
  var DashboardApi = class extends require_core_BaseApi.BaseApi {
11
11
  basePath = "/dashboard";
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardApi.cjs","names":["BaseApi"],"sources":["../../../src/apis/dashboard/DashboardApi.ts"],"sourcesContent":["import { BaseApi } from '../../core/BaseApi'\nimport type {\n DashboardDepartmentItem,\n DashboardGeneral,\n DashboardGrouped,\n DashboardPeriodItem,\n DashboardQuery,\n DashboardServiceItem,\n DashboardTopicItem,\n DashboardUserItem,\n DashboardWithTotals,\n} from './types'\n\n/**\n * Service statistics (\"Estatísticas de atendimento\"). The `/dashboard` routes only require an\n * authenticated user (no permission check). Every route takes the same {@link DashboardQuery}\n * filters; the grouped routes answer one item per day, user, department, topic or connection.\n */\nexport class DashboardApi extends BaseApi {\n public readonly basePath = '/dashboard'\n\n /** Message, ticket, contact and time counts of the period (`GET /dashboard/general`). */\n getGeneral(query?: DashboardQuery, headers?: Record<string, string>): Promise<DashboardGeneral> {\n return this.client.get<DashboardGeneral>(\n `${this.basePath}/general${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * The counts of each bucket of the period (`GET /dashboard/by-period`): one item per day by default,\n * or per `grouping` (hour, week, month, year). With `withTotals: true` the answer is\n * `{ totals, items }`.\n */\n getByPeriod(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardPeriodItem>>\n getByPeriod(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByPeriod(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[] | DashboardGrouped<DashboardPeriodItem>>\n getByPeriod(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[] | DashboardGrouped<DashboardPeriodItem>> {\n return this.getGrouped<DashboardPeriodItem>('by-period', query, headers)\n }\n\n /**\n * The counts of each user of the period (`GET /dashboard/by-user`). With `withTotals: true` the\n * answer is `{ totals, items }`.\n */\n getByUser(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardUserItem>>\n getByUser(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByUser(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[] | DashboardGrouped<DashboardUserItem>>\n getByUser(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[] | DashboardGrouped<DashboardUserItem>> {\n return this.getGrouped<DashboardUserItem>('by-user', query, headers)\n }\n\n /**\n * The counts of each department of the period (`GET /dashboard/by-department`). With\n * `withTotals: true` the answer is `{ totals, items }`.\n */\n getByDepartment(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardDepartmentItem>>\n getByDepartment(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByDepartment(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[] | DashboardGrouped<DashboardDepartmentItem>>\n getByDepartment(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[] | DashboardGrouped<DashboardDepartmentItem>> {\n return this.getGrouped<DashboardDepartmentItem>('by-department', query, headers)\n }\n\n /**\n * The counts of each ticket topic of the period (`GET /dashboard/by-topic`). Does not take\n * `withTotals` (the backend ignores it).\n */\n getByTopic(\n query?: DashboardQuery,\n headers?: Record<string, string>,\n ): Promise<DashboardTopicItem[]> {\n return this.client.get<DashboardTopicItem[]>(\n `${this.basePath}/by-topic${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * The counts of each connection of the period (`GET /dashboard/by-service`). Does not take\n * `withTotals` (the backend ignores it).\n */\n getByService(\n query?: DashboardQuery,\n headers?: Record<string, string>,\n ): Promise<DashboardServiceItem[]> {\n return this.client.get<DashboardServiceItem[]>(\n `${this.basePath}/by-service${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * `withTotals` is only sent when `true`: the backend reads it with a truthiness check, so in the\n * `qs` format a serialized `withTotals=false` (the string `'false'`) would wrap the answer anyway.\n */\n private getGrouped<TItem>(\n route: string,\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<TItem[] | DashboardGrouped<TItem>> {\n const { withTotals, ...filters } = query ?? {}\n return this.client.get<TItem[] | DashboardGrouped<TItem>>(\n `${this.basePath}/${route}${this.toQueryString(withTotals ? { ...filters, withTotals: true } : filters)}`,\n headers,\n )\n }\n}\n"],"mappings":";;;;;;;;;AAkBA,IAAa,eAAb,cAAkCA,6BAAQ;CACxC,AAAgB,WAAW;;CAG3B,WAAW,OAAwB,SAA6D;AAC9F,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,UAAU,KAAK,cAAc,MAAM,IACpD,QACD;;CAqBH,YACE,OACA,SACwE;AACxE,SAAO,KAAK,WAAgC,aAAa,OAAO,QAAQ;;CAoB1E,UACE,OACA,SACoE;AACpE,SAAO,KAAK,WAA8B,WAAW,OAAO,QAAQ;;CAoBtE,gBACE,OACA,SACgF;AAChF,SAAO,KAAK,WAAoC,iBAAiB,OAAO,QAAQ;;;;;;CAOlF,WACE,OACA,SAC+B;AAC/B,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,WAAW,KAAK,cAAc,MAAM,IACrD,QACD;;;;;;CAOH,aACE,OACA,SACiC;AACjC,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,aAAa,KAAK,cAAc,MAAM,IACvD,QACD;;;;;;CAOH,AAAQ,WACN,OACA,OACA,SAC4C;EAC5C,MAAM,EAAE,YAAY,GAAG,YAAY,SAAS,EAAE;AAC9C,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,QAAQ,KAAK,cAAc,aAAa;GAAE,GAAG;GAAS,YAAY;GAAM,GAAG,QAAQ,IACvG,QACD"}
1
+ {"version":3,"file":"DashboardApi.cjs","names":["BaseApi"],"sources":["../../../src/apis/dashboard/DashboardApi.ts"],"sourcesContent":["import { BaseApi } from '../../core/BaseApi'\nimport type {\n DashboardDepartmentItem,\n DashboardGeneral,\n DashboardGrouped,\n DashboardPeriodItem,\n DashboardQuery,\n DashboardServiceItem,\n DashboardTopicItem,\n DashboardUserItem,\n DashboardWithTotals,\n} from './types'\n\n/**\n * Service statistics (\"Estatísticas de atendimento\"). Every route takes the same\n * {@link DashboardQuery} filters; the grouped routes answer one item per day, user, department,\n * topic or connection.\n */\nexport class DashboardApi extends BaseApi {\n public readonly basePath = '/dashboard'\n\n /** Message, ticket, contact and time counts of the period (`GET /dashboard/general`). */\n getGeneral(query?: DashboardQuery, headers?: Record<string, string>): Promise<DashboardGeneral> {\n return this.client.get<DashboardGeneral>(\n `${this.basePath}/general${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * The counts of each bucket of the period (`GET /dashboard/by-period`): one item per day by default,\n * or per `grouping` (hour, week, month, year). With `withTotals: true` the answer is\n * `{ totals, items }`.\n */\n getByPeriod(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardPeriodItem>>\n getByPeriod(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByPeriod(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[] | DashboardGrouped<DashboardPeriodItem>>\n getByPeriod(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[] | DashboardGrouped<DashboardPeriodItem>> {\n return this.getGrouped<DashboardPeriodItem>('by-period', query, headers)\n }\n\n /**\n * The counts of each user of the period (`GET /dashboard/by-user`). With `withTotals: true` the\n * answer is `{ totals, items }`.\n */\n getByUser(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardUserItem>>\n getByUser(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByUser(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[] | DashboardGrouped<DashboardUserItem>>\n getByUser(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[] | DashboardGrouped<DashboardUserItem>> {\n return this.getGrouped<DashboardUserItem>('by-user', query, headers)\n }\n\n /**\n * The counts of each department of the period (`GET /dashboard/by-department`). With\n * `withTotals: true` the answer is `{ totals, items }`.\n */\n getByDepartment(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardDepartmentItem>>\n getByDepartment(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByDepartment(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[] | DashboardGrouped<DashboardDepartmentItem>>\n getByDepartment(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[] | DashboardGrouped<DashboardDepartmentItem>> {\n return this.getGrouped<DashboardDepartmentItem>('by-department', query, headers)\n }\n\n /**\n * The counts of each ticket topic of the period (`GET /dashboard/by-topic`). Does not take\n * `withTotals` (the backend ignores it).\n */\n getByTopic(\n query?: DashboardQuery,\n headers?: Record<string, string>,\n ): Promise<DashboardTopicItem[]> {\n return this.client.get<DashboardTopicItem[]>(\n `${this.basePath}/by-topic${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * The counts of each connection of the period (`GET /dashboard/by-service`). Does not take\n * `withTotals` (the backend ignores it).\n */\n getByService(\n query?: DashboardQuery,\n headers?: Record<string, string>,\n ): Promise<DashboardServiceItem[]> {\n return this.client.get<DashboardServiceItem[]>(\n `${this.basePath}/by-service${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * `withTotals` is only sent when `true`: the backend reads it with a truthiness check, so in the\n * `qs` format a serialized `withTotals=false` (the string `'false'`) would wrap the answer anyway.\n */\n private getGrouped<TItem>(\n route: string,\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<TItem[] | DashboardGrouped<TItem>> {\n const { withTotals, ...filters } = query ?? {}\n return this.client.get<TItem[] | DashboardGrouped<TItem>>(\n `${this.basePath}/${route}${this.toQueryString(withTotals ? { ...filters, withTotals: true } : filters)}`,\n headers,\n )\n }\n}\n"],"mappings":";;;;;;;;;AAkBA,IAAa,eAAb,cAAkCA,6BAAQ;CACxC,AAAgB,WAAW;;CAG3B,WAAW,OAAwB,SAA6D;AAC9F,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,UAAU,KAAK,cAAc,MAAM,IACpD,QACD;;CAqBH,YACE,OACA,SACwE;AACxE,SAAO,KAAK,WAAgC,aAAa,OAAO,QAAQ;;CAoB1E,UACE,OACA,SACoE;AACpE,SAAO,KAAK,WAA8B,WAAW,OAAO,QAAQ;;CAoBtE,gBACE,OACA,SACgF;AAChF,SAAO,KAAK,WAAoC,iBAAiB,OAAO,QAAQ;;;;;;CAOlF,WACE,OACA,SAC+B;AAC/B,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,WAAW,KAAK,cAAc,MAAM,IACrD,QACD;;;;;;CAOH,aACE,OACA,SACiC;AACjC,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,aAAa,KAAK,cAAc,MAAM,IACvD,QACD;;;;;;CAOH,AAAQ,WACN,OACA,OACA,SAC4C;EAC5C,MAAM,EAAE,YAAY,GAAG,YAAY,SAAS,EAAE;AAC9C,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,QAAQ,KAAK,cAAc,aAAa;GAAE,GAAG;GAAS,YAAY;GAAM,GAAG,QAAQ,IACvG,QACD"}
@@ -1,9 +1,9 @@
1
1
  import { BaseApi } from '../../core/BaseApi';
2
2
  import type { DashboardDepartmentItem, DashboardGeneral, DashboardGrouped, DashboardPeriodItem, DashboardQuery, DashboardServiceItem, DashboardTopicItem, DashboardUserItem, DashboardWithTotals } from './types';
3
3
  /**
4
- * Service statistics ("Estatísticas de atendimento"). The `/dashboard` routes only require an
5
- * authenticated user (no permission check). Every route takes the same {@link DashboardQuery}
6
- * filters; the grouped routes answer one item per day, user, department, topic or connection.
4
+ * Service statistics ("Estatísticas de atendimento"). Every route takes the same
5
+ * {@link DashboardQuery} filters; the grouped routes answer one item per day, user, department,
6
+ * topic or connection.
7
7
  */
8
8
  export declare class DashboardApi extends BaseApi {
9
9
  readonly basePath = "/dashboard";
@@ -2,9 +2,9 @@ import { BaseApi } from "../../core/BaseApi.mjs";
2
2
 
3
3
  //#region src/apis/dashboard/DashboardApi.ts
4
4
  /**
5
- * Service statistics ("Estatísticas de atendimento"). The `/dashboard` routes only require an
6
- * authenticated user (no permission check). Every route takes the same {@link DashboardQuery}
7
- * filters; the grouped routes answer one item per day, user, department, topic or connection.
5
+ * Service statistics ("Estatísticas de atendimento"). Every route takes the same
6
+ * {@link DashboardQuery} filters; the grouped routes answer one item per day, user, department,
7
+ * topic or connection.
8
8
  */
9
9
  var DashboardApi = class extends BaseApi {
10
10
  basePath = "/dashboard";
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardApi.mjs","names":[],"sources":["../../../src/apis/dashboard/DashboardApi.ts"],"sourcesContent":["import { BaseApi } from '../../core/BaseApi'\nimport type {\n DashboardDepartmentItem,\n DashboardGeneral,\n DashboardGrouped,\n DashboardPeriodItem,\n DashboardQuery,\n DashboardServiceItem,\n DashboardTopicItem,\n DashboardUserItem,\n DashboardWithTotals,\n} from './types'\n\n/**\n * Service statistics (\"Estatísticas de atendimento\"). The `/dashboard` routes only require an\n * authenticated user (no permission check). Every route takes the same {@link DashboardQuery}\n * filters; the grouped routes answer one item per day, user, department, topic or connection.\n */\nexport class DashboardApi extends BaseApi {\n public readonly basePath = '/dashboard'\n\n /** Message, ticket, contact and time counts of the period (`GET /dashboard/general`). */\n getGeneral(query?: DashboardQuery, headers?: Record<string, string>): Promise<DashboardGeneral> {\n return this.client.get<DashboardGeneral>(\n `${this.basePath}/general${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * The counts of each bucket of the period (`GET /dashboard/by-period`): one item per day by default,\n * or per `grouping` (hour, week, month, year). With `withTotals: true` the answer is\n * `{ totals, items }`.\n */\n getByPeriod(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardPeriodItem>>\n getByPeriod(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByPeriod(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[] | DashboardGrouped<DashboardPeriodItem>>\n getByPeriod(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[] | DashboardGrouped<DashboardPeriodItem>> {\n return this.getGrouped<DashboardPeriodItem>('by-period', query, headers)\n }\n\n /**\n * The counts of each user of the period (`GET /dashboard/by-user`). With `withTotals: true` the\n * answer is `{ totals, items }`.\n */\n getByUser(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardUserItem>>\n getByUser(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByUser(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[] | DashboardGrouped<DashboardUserItem>>\n getByUser(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[] | DashboardGrouped<DashboardUserItem>> {\n return this.getGrouped<DashboardUserItem>('by-user', query, headers)\n }\n\n /**\n * The counts of each department of the period (`GET /dashboard/by-department`). With\n * `withTotals: true` the answer is `{ totals, items }`.\n */\n getByDepartment(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardDepartmentItem>>\n getByDepartment(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByDepartment(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[] | DashboardGrouped<DashboardDepartmentItem>>\n getByDepartment(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[] | DashboardGrouped<DashboardDepartmentItem>> {\n return this.getGrouped<DashboardDepartmentItem>('by-department', query, headers)\n }\n\n /**\n * The counts of each ticket topic of the period (`GET /dashboard/by-topic`). Does not take\n * `withTotals` (the backend ignores it).\n */\n getByTopic(\n query?: DashboardQuery,\n headers?: Record<string, string>,\n ): Promise<DashboardTopicItem[]> {\n return this.client.get<DashboardTopicItem[]>(\n `${this.basePath}/by-topic${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * The counts of each connection of the period (`GET /dashboard/by-service`). Does not take\n * `withTotals` (the backend ignores it).\n */\n getByService(\n query?: DashboardQuery,\n headers?: Record<string, string>,\n ): Promise<DashboardServiceItem[]> {\n return this.client.get<DashboardServiceItem[]>(\n `${this.basePath}/by-service${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * `withTotals` is only sent when `true`: the backend reads it with a truthiness check, so in the\n * `qs` format a serialized `withTotals=false` (the string `'false'`) would wrap the answer anyway.\n */\n private getGrouped<TItem>(\n route: string,\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<TItem[] | DashboardGrouped<TItem>> {\n const { withTotals, ...filters } = query ?? {}\n return this.client.get<TItem[] | DashboardGrouped<TItem>>(\n `${this.basePath}/${route}${this.toQueryString(withTotals ? { ...filters, withTotals: true } : filters)}`,\n headers,\n )\n }\n}\n"],"mappings":";;;;;;;;AAkBA,IAAa,eAAb,cAAkC,QAAQ;CACxC,AAAgB,WAAW;;CAG3B,WAAW,OAAwB,SAA6D;AAC9F,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,UAAU,KAAK,cAAc,MAAM,IACpD,QACD;;CAqBH,YACE,OACA,SACwE;AACxE,SAAO,KAAK,WAAgC,aAAa,OAAO,QAAQ;;CAoB1E,UACE,OACA,SACoE;AACpE,SAAO,KAAK,WAA8B,WAAW,OAAO,QAAQ;;CAoBtE,gBACE,OACA,SACgF;AAChF,SAAO,KAAK,WAAoC,iBAAiB,OAAO,QAAQ;;;;;;CAOlF,WACE,OACA,SAC+B;AAC/B,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,WAAW,KAAK,cAAc,MAAM,IACrD,QACD;;;;;;CAOH,aACE,OACA,SACiC;AACjC,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,aAAa,KAAK,cAAc,MAAM,IACvD,QACD;;;;;;CAOH,AAAQ,WACN,OACA,OACA,SAC4C;EAC5C,MAAM,EAAE,YAAY,GAAG,YAAY,SAAS,EAAE;AAC9C,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,QAAQ,KAAK,cAAc,aAAa;GAAE,GAAG;GAAS,YAAY;GAAM,GAAG,QAAQ,IACvG,QACD"}
1
+ {"version":3,"file":"DashboardApi.mjs","names":[],"sources":["../../../src/apis/dashboard/DashboardApi.ts"],"sourcesContent":["import { BaseApi } from '../../core/BaseApi'\nimport type {\n DashboardDepartmentItem,\n DashboardGeneral,\n DashboardGrouped,\n DashboardPeriodItem,\n DashboardQuery,\n DashboardServiceItem,\n DashboardTopicItem,\n DashboardUserItem,\n DashboardWithTotals,\n} from './types'\n\n/**\n * Service statistics (\"Estatísticas de atendimento\"). Every route takes the same\n * {@link DashboardQuery} filters; the grouped routes answer one item per day, user, department,\n * topic or connection.\n */\nexport class DashboardApi extends BaseApi {\n public readonly basePath = '/dashboard'\n\n /** Message, ticket, contact and time counts of the period (`GET /dashboard/general`). */\n getGeneral(query?: DashboardQuery, headers?: Record<string, string>): Promise<DashboardGeneral> {\n return this.client.get<DashboardGeneral>(\n `${this.basePath}/general${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * The counts of each bucket of the period (`GET /dashboard/by-period`): one item per day by default,\n * or per `grouping` (hour, week, month, year). With `withTotals: true` the answer is\n * `{ totals, items }`.\n */\n getByPeriod(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardPeriodItem>>\n getByPeriod(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByPeriod(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[] | DashboardGrouped<DashboardPeriodItem>>\n getByPeriod(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardPeriodItem[] | DashboardGrouped<DashboardPeriodItem>> {\n return this.getGrouped<DashboardPeriodItem>('by-period', query, headers)\n }\n\n /**\n * The counts of each user of the period (`GET /dashboard/by-user`). With `withTotals: true` the\n * answer is `{ totals, items }`.\n */\n getByUser(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardUserItem>>\n getByUser(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByUser(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[] | DashboardGrouped<DashboardUserItem>>\n getByUser(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardUserItem[] | DashboardGrouped<DashboardUserItem>> {\n return this.getGrouped<DashboardUserItem>('by-user', query, headers)\n }\n\n /**\n * The counts of each department of the period (`GET /dashboard/by-department`). With\n * `withTotals: true` the answer is `{ totals, items }`.\n */\n getByDepartment(\n query: DashboardQuery & { withTotals: true },\n headers?: Record<string, string>,\n ): Promise<DashboardGrouped<DashboardDepartmentItem>>\n getByDepartment(\n query?: DashboardQuery & { withTotals?: false },\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[]>\n /** When `withTotals` is only known at runtime (e.g. a `boolean` variable). */\n getByDepartment(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[] | DashboardGrouped<DashboardDepartmentItem>>\n getByDepartment(\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<DashboardDepartmentItem[] | DashboardGrouped<DashboardDepartmentItem>> {\n return this.getGrouped<DashboardDepartmentItem>('by-department', query, headers)\n }\n\n /**\n * The counts of each ticket topic of the period (`GET /dashboard/by-topic`). Does not take\n * `withTotals` (the backend ignores it).\n */\n getByTopic(\n query?: DashboardQuery,\n headers?: Record<string, string>,\n ): Promise<DashboardTopicItem[]> {\n return this.client.get<DashboardTopicItem[]>(\n `${this.basePath}/by-topic${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * The counts of each connection of the period (`GET /dashboard/by-service`). Does not take\n * `withTotals` (the backend ignores it).\n */\n getByService(\n query?: DashboardQuery,\n headers?: Record<string, string>,\n ): Promise<DashboardServiceItem[]> {\n return this.client.get<DashboardServiceItem[]>(\n `${this.basePath}/by-service${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * `withTotals` is only sent when `true`: the backend reads it with a truthiness check, so in the\n * `qs` format a serialized `withTotals=false` (the string `'false'`) would wrap the answer anyway.\n */\n private getGrouped<TItem>(\n route: string,\n query?: DashboardQuery & DashboardWithTotals,\n headers?: Record<string, string>,\n ): Promise<TItem[] | DashboardGrouped<TItem>> {\n const { withTotals, ...filters } = query ?? {}\n return this.client.get<TItem[] | DashboardGrouped<TItem>>(\n `${this.basePath}/${route}${this.toQueryString(withTotals ? { ...filters, withTotals: true } : filters)}`,\n headers,\n )\n }\n}\n"],"mappings":";;;;;;;;AAkBA,IAAa,eAAb,cAAkC,QAAQ;CACxC,AAAgB,WAAW;;CAG3B,WAAW,OAAwB,SAA6D;AAC9F,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,UAAU,KAAK,cAAc,MAAM,IACpD,QACD;;CAqBH,YACE,OACA,SACwE;AACxE,SAAO,KAAK,WAAgC,aAAa,OAAO,QAAQ;;CAoB1E,UACE,OACA,SACoE;AACpE,SAAO,KAAK,WAA8B,WAAW,OAAO,QAAQ;;CAoBtE,gBACE,OACA,SACgF;AAChF,SAAO,KAAK,WAAoC,iBAAiB,OAAO,QAAQ;;;;;;CAOlF,WACE,OACA,SAC+B;AAC/B,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,WAAW,KAAK,cAAc,MAAM,IACrD,QACD;;;;;;CAOH,aACE,OACA,SACiC;AACjC,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,aAAa,KAAK,cAAc,MAAM,IACvD,QACD;;;;;;CAOH,AAAQ,WACN,OACA,OACA,SAC4C;EAC5C,MAAM,EAAE,YAAY,GAAG,YAAY,SAAS,EAAE;AAC9C,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,QAAQ,KAAK,cAAc,aAAa;GAAE,GAAG;GAAS,YAAY;GAAM,GAAG,QAAQ,IACvG,QACD"}
@@ -13,7 +13,11 @@ export type DashboardQuery = {
13
13
  startPeriod?: string;
14
14
  /** ISO date-time. Default: the end of the `startPeriod` day (or of today). */
15
15
  endPeriod?: string;
16
- /** Which ticket date the period filters: opening (default) or closing. */
16
+ /**
17
+ * Which ticket date the period filters: opening (`openDate`, the default) or closing. Sent
18
+ * without it, together with `status: 'all'`, the period is not applied. `getByPeriod` needs it:
19
+ * always send it there (the `openDate` default does not apply to that route).
20
+ */
17
21
  periodType?: 'openDate' | 'closeDate';
18
22
  /** Ticket status (`closed`, not `close`). */
19
23
  status?: 'all' | 'open' | 'closed';
@@ -38,9 +42,12 @@ export type DashboardQuery = {
38
42
  */
39
43
  userParticipation?: 'last' | 'middle';
40
44
  userStatus?: 'active' | 'archived' | 'all';
41
- serviceId?: string | string[];
42
- tagId?: string | string[];
43
- ticketTopicId?: string | string[];
45
+ /** One connection id (unlike `departmentId` and `userId`, not a list). */
46
+ serviceId?: string;
47
+ /** One tag id (not a list). */
48
+ tagId?: string;
49
+ /** One ticket subject id (not a list). */
50
+ ticketTopicId?: string;
44
51
  /**
45
52
  * Granularity of the `getByPeriod` items (the other routes ignore it). Default: `daily`. See
46
53
  * {@link DashboardGrouping} for the `name` of the items.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/dashboard/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/dashboard/types.ts"],"names":[],"mappings":"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"}
@@ -8,11 +8,11 @@ var DepartmentsApi = class extends require_core_ArchivableCrudApi.ArchivableCrud
8
8
  }
9
9
  /**
10
10
  * Archives (`archive: true`) or restores (`archive: false`) a department through the route used
11
- * by the UI, which enforces what {@link archive}/{@link unarchive} (a plain `PUT { archivedAt }`)
12
- * skip: archiving refuses (403 `Cannot archive department.`, with the reasons and the open
13
- * tickets count) a department in use, and clears it as the default department of contacts and
14
- * connections, marks its schedules as done and unlinks its users and quick replies. Resolves the
15
- * stored department (not transformed); an unknown id answers 500.
11
+ * by the UI: archiving refuses (403 `Cannot archive department.`) a department in use, or when it
12
+ * is the only active department of the account (the `extra` of the error is an
13
+ * `ArchiveDepartmentErrorExtra`). Archiving also clears it as the default department of contacts
14
+ * and connections, marks its schedules as done and unlinks its users and quick replies. Resolves
15
+ * the stored department (not transformed); an unknown id answers 500.
16
16
  * @permissions departments.view OR departments.archive
17
17
  */
18
18
  archiveWithValidation(id, body, headers) {