@ikatec/digisac-api-sdk 4.14.0 → 4.16.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 (217) hide show
  1. package/README.md +10 -3
  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/authHistory/AuthHistoryApi.cjs +9 -2
  17. package/dist/apis/authHistory/AuthHistoryApi.cjs.map +1 -1
  18. package/dist/apis/authHistory/AuthHistoryApi.d.ts +7 -2
  19. package/dist/apis/authHistory/AuthHistoryApi.d.ts.map +1 -1
  20. package/dist/apis/authHistory/AuthHistoryApi.mjs +9 -2
  21. package/dist/apis/authHistory/AuthHistoryApi.mjs.map +1 -1
  22. package/dist/apis/authHistory/types.d.ts +6 -1
  23. package/dist/apis/authHistory/types.d.ts.map +1 -1
  24. package/dist/apis/bots/BotsApi.cjs +16 -7
  25. package/dist/apis/bots/BotsApi.cjs.map +1 -1
  26. package/dist/apis/bots/BotsApi.d.ts +13 -7
  27. package/dist/apis/bots/BotsApi.d.ts.map +1 -1
  28. package/dist/apis/bots/BotsApi.mjs +16 -7
  29. package/dist/apis/bots/BotsApi.mjs.map +1 -1
  30. package/dist/apis/bots/types.d.ts +12 -2
  31. package/dist/apis/bots/types.d.ts.map +1 -1
  32. package/dist/apis/campaigns/CampaignsApi.cjs +25 -1
  33. package/dist/apis/campaigns/CampaignsApi.cjs.map +1 -1
  34. package/dist/apis/campaigns/CampaignsApi.d.ts +16 -1
  35. package/dist/apis/campaigns/CampaignsApi.d.ts.map +1 -1
  36. package/dist/apis/campaigns/CampaignsApi.mjs +25 -1
  37. package/dist/apis/campaigns/CampaignsApi.mjs.map +1 -1
  38. package/dist/apis/campaigns/types.d.ts +98 -6
  39. package/dist/apis/campaigns/types.d.ts.map +1 -1
  40. package/dist/apis/cards/types.d.ts +5 -5
  41. package/dist/apis/categories/CategoriesApi.cjs +1 -2
  42. package/dist/apis/categories/CategoriesApi.cjs.map +1 -1
  43. package/dist/apis/categories/CategoriesApi.d.ts +1 -2
  44. package/dist/apis/categories/CategoriesApi.d.ts.map +1 -1
  45. package/dist/apis/categories/CategoriesApi.mjs +1 -2
  46. package/dist/apis/categories/CategoriesApi.mjs.map +1 -1
  47. package/dist/apis/clientFeedback/ClientFeedbackApi.cjs +2 -3
  48. package/dist/apis/clientFeedback/ClientFeedbackApi.cjs.map +1 -1
  49. package/dist/apis/clientFeedback/ClientFeedbackApi.d.ts +2 -3
  50. package/dist/apis/clientFeedback/ClientFeedbackApi.d.ts.map +1 -1
  51. package/dist/apis/clientFeedback/ClientFeedbackApi.mjs +2 -3
  52. package/dist/apis/clientFeedback/ClientFeedbackApi.mjs.map +1 -1
  53. package/dist/apis/contacts/ContactsApi.cjs +20 -6
  54. package/dist/apis/contacts/ContactsApi.cjs.map +1 -1
  55. package/dist/apis/contacts/ContactsApi.d.ts +28 -4
  56. package/dist/apis/contacts/ContactsApi.d.ts.map +1 -1
  57. package/dist/apis/contacts/ContactsApi.mjs +20 -6
  58. package/dist/apis/contacts/ContactsApi.mjs.map +1 -1
  59. package/dist/apis/contacts/types.d.ts +101 -2
  60. package/dist/apis/contacts/types.d.ts.map +1 -1
  61. package/dist/apis/customFields/types.d.ts +4 -4
  62. package/dist/apis/dashboard/DashboardApi.cjs +3 -3
  63. package/dist/apis/dashboard/DashboardApi.cjs.map +1 -1
  64. package/dist/apis/dashboard/DashboardApi.d.ts +3 -3
  65. package/dist/apis/dashboard/DashboardApi.mjs +3 -3
  66. package/dist/apis/dashboard/DashboardApi.mjs.map +1 -1
  67. package/dist/apis/dashboard/types.d.ts +11 -4
  68. package/dist/apis/dashboard/types.d.ts.map +1 -1
  69. package/dist/apis/departments/DepartmentsApi.cjs +5 -5
  70. package/dist/apis/departments/DepartmentsApi.cjs.map +1 -1
  71. package/dist/apis/departments/DepartmentsApi.d.ts +5 -5
  72. package/dist/apis/departments/DepartmentsApi.mjs +5 -5
  73. package/dist/apis/departments/DepartmentsApi.mjs.map +1 -1
  74. package/dist/apis/departments/types.d.ts +6 -0
  75. package/dist/apis/departments/types.d.ts.map +1 -1
  76. package/dist/apis/distribution/DistributionApi.cjs +3 -4
  77. package/dist/apis/distribution/DistributionApi.cjs.map +1 -1
  78. package/dist/apis/distribution/DistributionApi.d.ts +3 -4
  79. package/dist/apis/distribution/DistributionApi.d.ts.map +1 -1
  80. package/dist/apis/distribution/DistributionApi.mjs +3 -4
  81. package/dist/apis/distribution/DistributionApi.mjs.map +1 -1
  82. package/dist/apis/files/FilesApi.cjs +13 -1
  83. package/dist/apis/files/FilesApi.cjs.map +1 -1
  84. package/dist/apis/files/FilesApi.d.ts +12 -2
  85. package/dist/apis/files/FilesApi.d.ts.map +1 -1
  86. package/dist/apis/files/FilesApi.mjs +13 -1
  87. package/dist/apis/files/FilesApi.mjs.map +1 -1
  88. package/dist/apis/files/types.d.ts +19 -1
  89. package/dist/apis/files/types.d.ts.map +1 -1
  90. package/dist/apis/kanbanCards/KanbanCardsApi.cjs +32 -0
  91. package/dist/apis/kanbanCards/KanbanCardsApi.cjs.map +1 -1
  92. package/dist/apis/kanbanCards/KanbanCardsApi.d.ts +27 -1
  93. package/dist/apis/kanbanCards/KanbanCardsApi.d.ts.map +1 -1
  94. package/dist/apis/kanbanCards/KanbanCardsApi.mjs +32 -0
  95. package/dist/apis/kanbanCards/KanbanCardsApi.mjs.map +1 -1
  96. package/dist/apis/kanbanCards/types.d.ts +1 -1
  97. package/dist/apis/kanbanCards/types.d.ts.map +1 -1
  98. package/dist/apis/kanbanColumns/KanbanColumnsApi.cjs +19 -0
  99. package/dist/apis/kanbanColumns/KanbanColumnsApi.cjs.map +1 -1
  100. package/dist/apis/kanbanColumns/KanbanColumnsApi.d.ts +16 -1
  101. package/dist/apis/kanbanColumns/KanbanColumnsApi.d.ts.map +1 -1
  102. package/dist/apis/kanbanColumns/KanbanColumnsApi.mjs +19 -0
  103. package/dist/apis/kanbanColumns/KanbanColumnsApi.mjs.map +1 -1
  104. package/dist/apis/kanbanColumns/types.d.ts +4 -0
  105. package/dist/apis/kanbanColumns/types.d.ts.map +1 -1
  106. package/dist/apis/messages/MessagesApi.cjs +13 -4
  107. package/dist/apis/messages/MessagesApi.cjs.map +1 -1
  108. package/dist/apis/messages/MessagesApi.d.ts +13 -4
  109. package/dist/apis/messages/MessagesApi.d.ts.map +1 -1
  110. package/dist/apis/messages/MessagesApi.mjs +13 -4
  111. package/dist/apis/messages/MessagesApi.mjs.map +1 -1
  112. package/dist/apis/messages/types.d.ts +5 -0
  113. package/dist/apis/messages/types.d.ts.map +1 -1
  114. package/dist/apis/pipeline/types.d.ts +7 -8
  115. package/dist/apis/pipeline/types.d.ts.map +1 -1
  116. package/dist/apis/quickReplies/types.d.ts +4 -1
  117. package/dist/apis/quickReplies/types.d.ts.map +1 -1
  118. package/dist/apis/schedule/types.d.ts +41 -10
  119. package/dist/apis/schedule/types.d.ts.map +1 -1
  120. package/dist/apis/terms/TermsApi.cjs +2 -2
  121. package/dist/apis/terms/TermsApi.cjs.map +1 -1
  122. package/dist/apis/terms/TermsApi.d.ts +2 -2
  123. package/dist/apis/terms/TermsApi.mjs +2 -2
  124. package/dist/apis/terms/TermsApi.mjs.map +1 -1
  125. package/dist/apis/tickets/TicketsApi.cjs +18 -8
  126. package/dist/apis/tickets/TicketsApi.cjs.map +1 -1
  127. package/dist/apis/tickets/TicketsApi.d.ts +15 -8
  128. package/dist/apis/tickets/TicketsApi.d.ts.map +1 -1
  129. package/dist/apis/tickets/TicketsApi.mjs +18 -8
  130. package/dist/apis/tickets/TicketsApi.mjs.map +1 -1
  131. package/dist/apis/tickets/types.d.ts +4 -1
  132. package/dist/apis/tickets/types.d.ts.map +1 -1
  133. package/dist/apis/timetable/TimetableApi.cjs +6 -0
  134. package/dist/apis/timetable/TimetableApi.cjs.map +1 -1
  135. package/dist/apis/timetable/TimetableApi.d.ts +6 -0
  136. package/dist/apis/timetable/TimetableApi.d.ts.map +1 -1
  137. package/dist/apis/timetable/TimetableApi.mjs +6 -0
  138. package/dist/apis/timetable/TimetableApi.mjs.map +1 -1
  139. package/dist/apis/timetable/types.d.ts +8 -0
  140. package/dist/apis/timetable/types.d.ts.map +1 -1
  141. package/dist/apis/users/UsersApi.cjs +11 -3
  142. package/dist/apis/users/UsersApi.cjs.map +1 -1
  143. package/dist/apis/users/UsersApi.d.ts +10 -4
  144. package/dist/apis/users/UsersApi.d.ts.map +1 -1
  145. package/dist/apis/users/UsersApi.mjs +11 -3
  146. package/dist/apis/users/UsersApi.mjs.map +1 -1
  147. package/dist/apis/users/types.d.ts +26 -0
  148. package/dist/apis/users/types.d.ts.map +1 -1
  149. package/dist/apis/webhooks/types.d.ts +51 -6
  150. package/dist/apis/webhooks/types.d.ts.map +1 -1
  151. package/dist/core/BaseReadApi.cjs +2 -2
  152. package/dist/core/BaseReadApi.cjs.map +1 -1
  153. package/dist/core/BaseReadApi.d.ts +2 -2
  154. package/dist/core/BaseReadApi.mjs +2 -2
  155. package/dist/core/BaseReadApi.mjs.map +1 -1
  156. package/dist/core/errors.cjs +4 -1
  157. package/dist/core/errors.cjs.map +1 -1
  158. package/dist/core/errors.d.ts +4 -1
  159. package/dist/core/errors.d.ts.map +1 -1
  160. package/dist/core/errors.mjs +4 -1
  161. package/dist/core/errors.mjs.map +1 -1
  162. package/package.json +1 -1
  163. package/src/apis/absence/AbsenceApi.ts +2 -2
  164. package/src/apis/absence/types.ts +1 -1
  165. package/src/apis/answers/AnswersApi.test.ts +32 -0
  166. package/src/apis/answers/AnswersApi.ts +38 -2
  167. package/src/apis/answers/types.ts +1 -2
  168. package/src/apis/authHistory/AuthHistoryApi.test.ts +16 -0
  169. package/src/apis/authHistory/AuthHistoryApi.ts +10 -2
  170. package/src/apis/authHistory/types.ts +6 -1
  171. package/src/apis/bots/BotsApi.test.ts +16 -0
  172. package/src/apis/bots/BotsApi.ts +25 -7
  173. package/src/apis/bots/types.ts +12 -2
  174. package/src/apis/campaigns/CampaignsApi.test.ts +48 -0
  175. package/src/apis/campaigns/CampaignsApi.ts +31 -2
  176. package/src/apis/campaigns/types.ts +101 -3
  177. package/src/apis/cards/types.ts +5 -5
  178. package/src/apis/categories/CategoriesApi.ts +1 -2
  179. package/src/apis/clientFeedback/ClientFeedbackApi.ts +2 -3
  180. package/src/apis/contacts/ContactsApi.test.ts +49 -2
  181. package/src/apis/contacts/ContactsApi.ts +64 -4
  182. package/src/apis/contacts/types.ts +111 -1
  183. package/src/apis/creditMovements/CreditMovementsApi.test.ts +1 -1
  184. package/src/apis/customFields/types.ts +4 -4
  185. package/src/apis/dashboard/DashboardApi.test-d.ts +9 -0
  186. package/src/apis/dashboard/DashboardApi.ts +3 -3
  187. package/src/apis/dashboard/types.ts +11 -4
  188. package/src/apis/departments/DepartmentsApi.ts +5 -5
  189. package/src/apis/departments/types.ts +13 -0
  190. package/src/apis/distribution/DistributionApi.ts +3 -4
  191. package/src/apis/files/FilesApi.test.ts +21 -0
  192. package/src/apis/files/FilesApi.ts +19 -1
  193. package/src/apis/files/types.ts +20 -1
  194. package/src/apis/kanbanCards/KanbanCardsApi.test.ts +21 -0
  195. package/src/apis/kanbanCards/KanbanCardsApi.ts +47 -1
  196. package/src/apis/kanbanCards/types.ts +1 -1
  197. package/src/apis/kanbanColumns/KanbanColumnsApi.test.ts +26 -0
  198. package/src/apis/kanbanColumns/KanbanColumnsApi.ts +31 -0
  199. package/src/apis/kanbanColumns/types.ts +5 -0
  200. package/src/apis/messages/MessagesApi.ts +13 -4
  201. package/src/apis/messages/types.ts +5 -0
  202. package/src/apis/payloads.test-d.ts +245 -5
  203. package/src/apis/pipeline/types.ts +7 -8
  204. package/src/apis/queryFormat.test.ts +13 -0
  205. package/src/apis/quickReplies/types.ts +4 -1
  206. package/src/apis/schedule/types.ts +42 -10
  207. package/src/apis/terms/TermsApi.ts +2 -2
  208. package/src/apis/tickets/TicketsApi.ts +28 -8
  209. package/src/apis/tickets/types.ts +4 -1
  210. package/src/apis/timetable/TimetableApi.ts +6 -0
  211. package/src/apis/timetable/types.ts +9 -0
  212. package/src/apis/users/UsersApi.test.ts +17 -0
  213. package/src/apis/users/UsersApi.ts +21 -3
  214. package/src/apis/users/types.ts +28 -0
  215. package/src/apis/webhooks/types.ts +53 -6
  216. package/src/core/BaseReadApi.ts +2 -2
  217. package/src/core/errors.ts +4 -1
@@ -5,9 +5,6 @@ import { BaseApi } from "../../core/BaseApi.mjs";
5
5
  * Bots. The list route always paginates (`paginate: false` is ignored), so this class does not
6
6
  * extend `BaseCrudApi`. The contexts travel as a list (`BotContextInput` / `BotParsedContext`),
7
7
  * not as the stored map that `BotVersionsApi` serves.
8
- *
9
- * `GET /bots/:id/errors/export` is not exposed: it answers a binary xlsx, and `ApiClient` only
10
- * handles JSON/text bodies.
11
8
  */
12
9
  var BotsApi = class extends BaseApi {
13
10
  basePath = "/bots";
@@ -73,9 +70,22 @@ var BotsApi = class extends BaseApi {
73
70
  return this.client.get(`${this.basePath}/${id}/errors${this.toQueryString(query)}`, headers);
74
71
  }
75
72
  /**
73
+ * Exports the failed steps of the bot runs of the last 30 days as an xlsx workbook (binary).
74
+ * Needs a client with `requestRaw`. A period without errors answers 400 `No errors found to
75
+ * export`; an unknown bot answers 404.
76
+ * @permissions bots.view
77
+ */
78
+ async exportErrors(id, headers) {
79
+ if (!this.client.requestRaw) throw new Error("exportErrors needs a client with requestRaw (the answer is a binary xlsx)");
80
+ return (await this.client.requestRaw("GET", `${this.basePath}/${id}/errors/export`, void 0, headers)).arrayBuffer();
81
+ }
82
+ /**
76
83
  * Fires the `API_SIGNAL` trigger of the bot for the contact, with an optional `flag` (read by
77
84
  * the `api_signal_flag` condition). Asynchronous: always resolves with no content, and the
78
- * worker only runs it when the contact has an open ticket.
85
+ * worker only runs it when the contact has an open ticket. The worker runs the flow of `botId`
86
+ * on the engine of the bot of the contact's connection (see `BotSettings.botCreatedVersion`; when
87
+ * the connection has no bot, the engine of the `botId` bot). `triggerSignal` does not reach the
88
+ * bot simulator (there the `API_SIGNAL` path is picked by hand, with no `flag`).
79
89
  * @permissions bots.view
80
90
  */
81
91
  triggerSignal(botId, contactId, flag, headers) {
@@ -93,9 +103,8 @@ var BotsApi = class extends BaseApi {
93
103
  }
94
104
  /**
95
105
  * Generates a prompt for an AI agent of the bot. COSTS one AI agent credit of the account and
96
- * calls OpenAI. No permission check: any authenticated user. A missing field answers 400; an
97
- * option outside the lists, or the AI agent limit of the account reached
98
- * (`Agent limit reached`), answers 500.
106
+ * calls OpenAI. A missing field answers 400; an option outside the lists, or the AI agent limit
107
+ * of the account reached (`Agent limit reached`), answers 500.
99
108
  */
100
109
  suggestAgentPrompt(body, headers) {
101
110
  return this.client.post(`${this.basePath}/suggest-agent-prompt`, body, headers);
@@ -1 +1 @@
1
- {"version":3,"file":"BotsApi.mjs","names":[],"sources":["../../../src/apis/bots/BotsApi.ts"],"sourcesContent":["import { BaseApi } from '../../core/BaseApi'\nimport type {\n GetByIdQuery,\n HasCreate,\n HasDeleteById,\n HasGetById,\n HasUpdateById,\n ListQuery,\n Paginated,\n} from '../../core/types'\nimport type {\n Bot,\n BotErrorsQuery,\n BotHistory,\n CreateBotPayload,\n SuggestAgentPromptPayload,\n UpdateBotPayload,\n} from './types'\n\n/**\n * Bots. The list route always paginates (`paginate: false` is ignored), so this class does not\n * extend `BaseCrudApi`. The contexts travel as a list (`BotContextInput` / `BotParsedContext`),\n * not as the stored map that `BotVersionsApi` serves.\n *\n * `GET /bots/:id/errors/export` is not exposed: it answers a binary xlsx, and `ApiClient` only\n * handles JSON/text bodies.\n */\nexport class BotsApi\n extends BaseApi\n implements\n HasGetById<Bot>,\n HasCreate<Bot, CreateBotPayload>,\n HasUpdateById<Bot, UpdateBotPayload>,\n HasDeleteById<'OK' | false>\n{\n public readonly basePath = '/bots'\n\n /**\n * Lists the bots of the account. Always paginated, even with `paginate: false`.\n * @permissions bots.view\n */\n getMany(query?: ListQuery<Bot>, headers?: Record<string, string>): Promise<Paginated<Bot>> {\n return this.client.get<Paginated<Bot>>(`${this.basePath}${this.toQueryString(query)}`, headers)\n }\n\n /**\n * Returns the first bot matching the query, or `null` when none match.\n * @permissions bots.view\n */\n async getOne(query?: ListQuery<Bot>, headers?: Record<string, string>): Promise<Bot | null> {\n const page = await this.getMany({ ...query, perPage: 1, page: 1 }, headers)\n return page?.data?.[0] ?? null\n }\n\n /**\n * Returns a bot by ID, with `defaultContexts` (the stored map, as a JSON string). An unknown id\n * answers 500, not an empty body.\n * @permissions bots.view\n */\n getById(id: string, query?: GetByIdQuery<Bot>, headers?: Record<string, string>): Promise<Bot> {\n return this.client.get<Bot>(`${this.basePath}/${id}${this.toQueryString(query)}`, headers)\n }\n\n /**\n * Creates a bot and its first version (published, or a draft with `isDraft`). A duplicate name\n * answers 409, unless the account allows duplicate names. Send `flowJson` with `edges`, or the\n * bot never sends a message (SD-2323).\n * @permissions bots.create\n */\n create(body: CreateBotPayload, headers?: Record<string, string>): Promise<Bot> {\n return this.client.post<Bot, CreateBotPayload>(this.basePath, body, headers)\n }\n\n /**\n * Saves the flow (publishing a version, or into the draft with `isDraft`), or only renames the\n * bot with `onlyUpdateBotName`. Resolves to the bot with `defaultContexts` as an object.\n * @permissions bots.view OR bots.update\n */\n updateById(id: string, body: UpdateBotPayload, headers?: Record<string, string>): Promise<Bot> {\n return this.client.put<Bot, UpdateBotPayload>(`${this.basePath}/${id}`, body, headers)\n }\n\n /**\n * Deletes a bot and its versions (hard delete). Today resolves to `false` even when the bot was\n * deleted (the backend destroy returns nothing); it becomes `'OK'` once the destroy returns the\n * bot, as in the other routes. Do not read the result as success or failure. An unknown id\n * answers 500.\n * @permissions bots.view OR bots.destroy\n */\n deleteById(id: string, headers?: Record<string, string>): Promise<'OK' | false> {\n return this.client.delete<'OK' | false>(`${this.basePath}/${id}`, headers)\n }\n\n /**\n * Lists the failed steps of the bot runs, newest first by default. An unknown bot answers an\n * empty page.\n * @permissions bots.view\n */\n getErrors(\n id: string,\n query?: BotErrorsQuery,\n headers?: Record<string, string>,\n ): Promise<Paginated<BotHistory>> {\n return this.client.get<Paginated<BotHistory>>(\n `${this.basePath}/${id}/errors${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * Fires the `API_SIGNAL` trigger of the bot for the contact, with an optional `flag` (read by\n * the `api_signal_flag` condition). Asynchronous: always resolves with no content, and the\n * worker only runs it when the contact has an open ticket.\n * @permissions bots.view\n */\n triggerSignal(\n botId: string,\n contactId: string,\n flag?: string,\n headers?: Record<string, string>,\n ): Promise<void> {\n return this.client.post<void, { flag: string } | undefined>(\n `${this.basePath}/${botId}/trigger-signal/${contactId}`,\n flag === undefined ? undefined : { flag },\n headers,\n )\n }\n\n /**\n * Answers a pending asynchronous `HTTP_REQUEST` action: `body` becomes the response the bot\n * reads. Resolves with no content. An unknown history answers 404; a history that is not\n * `PENDING`, or of another bot, answers 400. JSON bodies only (the route also takes text, XML\n * and CSV), up to 250 KB.\n * @permissions bots.view\n */\n requestCallback(\n id: string,\n pendingRequestId: string,\n body: unknown,\n headers?: Record<string, string>,\n ): Promise<void> {\n return this.client.post<void, unknown>(\n `${this.basePath}/${id}/request-callback/${pendingRequestId}`,\n body,\n headers,\n )\n }\n\n /**\n * Generates a prompt for an AI agent of the bot. COSTS one AI agent credit of the account and\n * calls OpenAI. No permission check: any authenticated user. A missing field answers 400; an\n * option outside the lists, or the AI agent limit of the account reached\n * (`Agent limit reached`), answers 500.\n */\n suggestAgentPrompt(\n body: SuggestAgentPromptPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, SuggestAgentPromptPayload>(\n `${this.basePath}/suggest-agent-prompt`,\n body,\n headers,\n )\n }\n}\n"],"mappings":";;;;;;;;;;;AA2BA,IAAa,UAAb,cACU,QAMV;CACE,AAAgB,WAAW;;;;;CAM3B,QAAQ,OAAwB,SAA2D;AACzF,SAAO,KAAK,OAAO,IAAoB,GAAG,KAAK,WAAW,KAAK,cAAc,MAAM,IAAI,QAAQ;;;;;;CAOjG,MAAM,OAAO,OAAwB,SAAuD;AAE1F,UADa,MAAM,KAAK,QAAQ;GAAE,GAAG;GAAO,SAAS;GAAG,MAAM;GAAG,EAAE,QAAQ,GAC9D,OAAO,MAAM;;;;;;;CAQ5B,QAAQ,IAAY,OAA2B,SAAgD;AAC7F,SAAO,KAAK,OAAO,IAAS,GAAG,KAAK,SAAS,GAAG,KAAK,KAAK,cAAc,MAAM,IAAI,QAAQ;;;;;;;;CAS5F,OAAO,MAAwB,SAAgD;AAC7E,SAAO,KAAK,OAAO,KAA4B,KAAK,UAAU,MAAM,QAAQ;;;;;;;CAQ9E,WAAW,IAAY,MAAwB,SAAgD;AAC7F,SAAO,KAAK,OAAO,IAA2B,GAAG,KAAK,SAAS,GAAG,MAAM,MAAM,QAAQ;;;;;;;;;CAUxF,WAAW,IAAY,SAAyD;AAC9E,SAAO,KAAK,OAAO,OAAqB,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ;;;;;;;CAQ5E,UACE,IACA,OACA,SACgC;AAChC,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,KAAK,cAAc,MAAM,IACzD,QACD;;;;;;;;CASH,cACE,OACA,WACA,MACA,SACe;AACf,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,MAAM,kBAAkB,aAC5C,SAAS,SAAY,SAAY,EAAE,MAAM,EACzC,QACD;;;;;;;;;CAUH,gBACE,IACA,kBACA,MACA,SACe;AACf,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,oBAAoB,oBAC3C,MACA,QACD;;;;;;;;CASH,mBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,wBACjB,MACA,QACD"}
1
+ {"version":3,"file":"BotsApi.mjs","names":[],"sources":["../../../src/apis/bots/BotsApi.ts"],"sourcesContent":["import { BaseApi } from '../../core/BaseApi'\nimport type {\n GetByIdQuery,\n HasCreate,\n HasDeleteById,\n HasGetById,\n HasUpdateById,\n ListQuery,\n Paginated,\n} from '../../core/types'\nimport type {\n Bot,\n BotErrorsQuery,\n BotHistory,\n CreateBotPayload,\n SuggestAgentPromptPayload,\n UpdateBotPayload,\n} from './types'\n\n/**\n * Bots. The list route always paginates (`paginate: false` is ignored), so this class does not\n * extend `BaseCrudApi`. The contexts travel as a list (`BotContextInput` / `BotParsedContext`),\n * not as the stored map that `BotVersionsApi` serves.\n */\nexport class BotsApi\n extends BaseApi\n implements\n HasGetById<Bot>,\n HasCreate<Bot, CreateBotPayload>,\n HasUpdateById<Bot, UpdateBotPayload>,\n HasDeleteById<'OK' | false>\n{\n public readonly basePath = '/bots'\n\n /**\n * Lists the bots of the account. Always paginated, even with `paginate: false`.\n * @permissions bots.view\n */\n getMany(query?: ListQuery<Bot>, headers?: Record<string, string>): Promise<Paginated<Bot>> {\n return this.client.get<Paginated<Bot>>(`${this.basePath}${this.toQueryString(query)}`, headers)\n }\n\n /**\n * Returns the first bot matching the query, or `null` when none match.\n * @permissions bots.view\n */\n async getOne(query?: ListQuery<Bot>, headers?: Record<string, string>): Promise<Bot | null> {\n const page = await this.getMany({ ...query, perPage: 1, page: 1 }, headers)\n return page?.data?.[0] ?? null\n }\n\n /**\n * Returns a bot by ID, with `defaultContexts` (the stored map, as a JSON string). An unknown id\n * answers 500, not an empty body.\n * @permissions bots.view\n */\n getById(id: string, query?: GetByIdQuery<Bot>, headers?: Record<string, string>): Promise<Bot> {\n return this.client.get<Bot>(`${this.basePath}/${id}${this.toQueryString(query)}`, headers)\n }\n\n /**\n * Creates a bot and its first version (published, or a draft with `isDraft`). A duplicate name\n * answers 409, unless the account allows duplicate names. Send `flowJson` with `edges`, or the\n * bot never sends a message (SD-2323).\n * @permissions bots.create\n */\n create(body: CreateBotPayload, headers?: Record<string, string>): Promise<Bot> {\n return this.client.post<Bot, CreateBotPayload>(this.basePath, body, headers)\n }\n\n /**\n * Saves the flow (publishing a version, or into the draft with `isDraft`), or only renames the\n * bot with `onlyUpdateBotName`. Resolves to the bot with `defaultContexts` as an object.\n * @permissions bots.view OR bots.update\n */\n updateById(id: string, body: UpdateBotPayload, headers?: Record<string, string>): Promise<Bot> {\n return this.client.put<Bot, UpdateBotPayload>(`${this.basePath}/${id}`, body, headers)\n }\n\n /**\n * Deletes a bot and its versions (hard delete). Today resolves to `false` even when the bot was\n * deleted (the backend destroy returns nothing); it becomes `'OK'` once the destroy returns the\n * bot, as in the other routes. Do not read the result as success or failure. An unknown id\n * answers 500.\n * @permissions bots.view OR bots.destroy\n */\n deleteById(id: string, headers?: Record<string, string>): Promise<'OK' | false> {\n return this.client.delete<'OK' | false>(`${this.basePath}/${id}`, headers)\n }\n\n /**\n * Lists the failed steps of the bot runs, newest first by default. An unknown bot answers an\n * empty page.\n * @permissions bots.view\n */\n getErrors(\n id: string,\n query?: BotErrorsQuery,\n headers?: Record<string, string>,\n ): Promise<Paginated<BotHistory>> {\n return this.client.get<Paginated<BotHistory>>(\n `${this.basePath}/${id}/errors${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * Exports the failed steps of the bot runs of the last 30 days as an xlsx workbook (binary).\n * Needs a client with `requestRaw`. A period without errors answers 400 `No errors found to\n * export`; an unknown bot answers 404.\n * @permissions bots.view\n */\n async exportErrors(id: string, headers?: Record<string, string>): Promise<ArrayBuffer> {\n if (!this.client.requestRaw) {\n throw new Error('exportErrors needs a client with requestRaw (the answer is a binary xlsx)')\n }\n const response = await this.client.requestRaw(\n 'GET',\n `${this.basePath}/${id}/errors/export`,\n undefined,\n headers,\n )\n return response.arrayBuffer()\n }\n\n /**\n * Fires the `API_SIGNAL` trigger of the bot for the contact, with an optional `flag` (read by\n * the `api_signal_flag` condition). Asynchronous: always resolves with no content, and the\n * worker only runs it when the contact has an open ticket. The worker runs the flow of `botId`\n * on the engine of the bot of the contact's connection (see `BotSettings.botCreatedVersion`; when\n * the connection has no bot, the engine of the `botId` bot). `triggerSignal` does not reach the\n * bot simulator (there the `API_SIGNAL` path is picked by hand, with no `flag`).\n * @permissions bots.view\n */\n triggerSignal(\n botId: string,\n contactId: string,\n flag?: string,\n headers?: Record<string, string>,\n ): Promise<void> {\n return this.client.post<void, { flag: string } | undefined>(\n `${this.basePath}/${botId}/trigger-signal/${contactId}`,\n flag === undefined ? undefined : { flag },\n headers,\n )\n }\n\n /**\n * Answers a pending asynchronous `HTTP_REQUEST` action: `body` becomes the response the bot\n * reads. Resolves with no content. An unknown history answers 404; a history that is not\n * `PENDING`, or of another bot, answers 400. JSON bodies only (the route also takes text, XML\n * and CSV), up to 250 KB.\n * @permissions bots.view\n */\n requestCallback(\n id: string,\n pendingRequestId: string,\n body: unknown,\n headers?: Record<string, string>,\n ): Promise<void> {\n return this.client.post<void, unknown>(\n `${this.basePath}/${id}/request-callback/${pendingRequestId}`,\n body,\n headers,\n )\n }\n\n /**\n * Generates a prompt for an AI agent of the bot. COSTS one AI agent credit of the account and\n * calls OpenAI. A missing field answers 400; an option outside the lists, or the AI agent limit\n * of the account reached (`Agent limit reached`), answers 500.\n */\n suggestAgentPrompt(\n body: SuggestAgentPromptPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, SuggestAgentPromptPayload>(\n `${this.basePath}/suggest-agent-prompt`,\n body,\n headers,\n )\n }\n}\n"],"mappings":";;;;;;;;AAwBA,IAAa,UAAb,cACU,QAMV;CACE,AAAgB,WAAW;;;;;CAM3B,QAAQ,OAAwB,SAA2D;AACzF,SAAO,KAAK,OAAO,IAAoB,GAAG,KAAK,WAAW,KAAK,cAAc,MAAM,IAAI,QAAQ;;;;;;CAOjG,MAAM,OAAO,OAAwB,SAAuD;AAE1F,UADa,MAAM,KAAK,QAAQ;GAAE,GAAG;GAAO,SAAS;GAAG,MAAM;GAAG,EAAE,QAAQ,GAC9D,OAAO,MAAM;;;;;;;CAQ5B,QAAQ,IAAY,OAA2B,SAAgD;AAC7F,SAAO,KAAK,OAAO,IAAS,GAAG,KAAK,SAAS,GAAG,KAAK,KAAK,cAAc,MAAM,IAAI,QAAQ;;;;;;;;CAS5F,OAAO,MAAwB,SAAgD;AAC7E,SAAO,KAAK,OAAO,KAA4B,KAAK,UAAU,MAAM,QAAQ;;;;;;;CAQ9E,WAAW,IAAY,MAAwB,SAAgD;AAC7F,SAAO,KAAK,OAAO,IAA2B,GAAG,KAAK,SAAS,GAAG,MAAM,MAAM,QAAQ;;;;;;;;;CAUxF,WAAW,IAAY,SAAyD;AAC9E,SAAO,KAAK,OAAO,OAAqB,GAAG,KAAK,SAAS,GAAG,MAAM,QAAQ;;;;;;;CAQ5E,UACE,IACA,OACA,SACgC;AAChC,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,KAAK,cAAc,MAAM,IACzD,QACD;;;;;;;;CASH,MAAM,aAAa,IAAY,SAAwD;AACrF,MAAI,CAAC,KAAK,OAAO,WACf,OAAM,IAAI,MAAM,4EAA4E;AAQ9F,UANiB,MAAM,KAAK,OAAO,WACjC,OACA,GAAG,KAAK,SAAS,GAAG,GAAG,iBACvB,QACA,QACD,EACe,aAAa;;;;;;;;;;;CAY/B,cACE,OACA,WACA,MACA,SACe;AACf,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,MAAM,kBAAkB,aAC5C,SAAS,SAAY,SAAY,EAAE,MAAM,EACzC,QACD;;;;;;;;;CAUH,gBACE,IACA,kBACA,MACA,SACe;AACf,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,oBAAoB,oBAC3C,MACA,QACD;;;;;;;CAQH,mBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,wBACjB,MACA,QACD"}
@@ -9,7 +9,11 @@ export type BotLimitations = {
9
9
  export type BotSettings = {
10
10
  /** If true, only the first matching rule per trigger fires; otherwise all matching rules fire. */
11
11
  sequentialRuleExecution?: boolean;
12
- /** Version of the bot builder used to create this bot. v3 uses the visual flow builder. */
12
+ /**
13
+ * Version of the bot builder used to create this bot, which also picks the engine that runs it:
14
+ * `v3` (the visual flow builder) runs on the flow engine; `v1`, `v2` or absent, on the legacy
15
+ * engine. The bot simulator always runs the flow engine.
16
+ */
13
17
  botCreatedVersion?: BotCreatedVersion;
14
18
  limitations?: BotLimitations;
15
19
  };
@@ -162,6 +166,11 @@ export type BotActionDataMap = {
162
166
  waitSeconds?: number;
163
167
  };
164
168
  };
169
+ /**
170
+ * Runs on the flow engine (`botCreatedVersion: 'v3'`). `endpointUrl`, `httpMethod`, `retries`,
171
+ * `timeout` and `bodyType` are required to run it: without one of them the step does not run.
172
+ * The bot simulator does not run it.
173
+ */
165
174
  HTTP_REQUEST: {
166
175
  requestName?: string;
167
176
  endpointUrl?: string;
@@ -182,8 +191,9 @@ export type BotActionDataMap = {
182
191
  }[];
183
192
  requestBodyJson?: string;
184
193
  requestBodyXml?: string;
194
+ /** Number of attempts (at least 1), not of retries after the first one. */
185
195
  retries?: number;
186
- /** Timeout in milliseconds. */
196
+ /** Timeout of each attempt, in SECONDS. */
187
197
  timeout?: number;
188
198
  /** Response properties to extract into bot session variables. */
189
199
  variables?: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/bots/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/apis/bots/types.ts"],"names":[],"mappings":"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"}
@@ -13,12 +13,30 @@ qs = require_chunk.__toESM(qs);
13
13
  * {@link CampaignListQuery}); `getById` of an unknown id resolves `null`. `deleteById` answers the
14
14
  * text `'OK'`. `getMany({ paginate: false })` answers 400 `FILTER_PARAM_INVALID` with the default
15
15
  * `'json'` query format (the route only takes `paginate` as a string): use `withQueryFormat('qs')`.
16
+ * `getOne` reads a page of one campaign, so it works with every query format.
16
17
  */
17
18
  var CampaignsApi = class extends require_core_BaseCrudApi.BaseCrudApi {
18
19
  constructor(client) {
19
20
  super(client, "/campaigns");
20
21
  }
21
22
  /**
23
+ * Returns the first campaign matching the query, or `null` when none match. Reads the first page
24
+ * with one campaign (`page: 1`, `perPage: 1`: the `page` and `perPage` of the query are
25
+ * replaced, and its `paginate` and `limit` are left out), so the campaign comes with the `stats`
26
+ * of `getMany`.
27
+ * @permissions campaigns.view
28
+ */
29
+ async getOne(query, headers) {
30
+ const pageQuery = {
31
+ ...query,
32
+ page: 1,
33
+ perPage: 1
34
+ };
35
+ delete pageQuery.paginate;
36
+ delete pageQuery.limit;
37
+ return (await this.client.get(`${this.basePath}${this.toQueryString(pageQuery)}`, headers))?.data?.[0] ?? null;
38
+ }
39
+ /**
22
40
  * Starts sending the campaign: answers it as `processing` (an `import_error` campaign goes back
23
41
  * to `importing_contacts`). It becomes `done` once every contact is fired.
24
42
  * @permissions campaigns.view
@@ -125,7 +143,13 @@ var CampaignsApi = class extends require_core_BaseCrudApi.BaseCrudApi {
125
143
  deleteMany(ids, headers) {
126
144
  return this.client.request("DELETE", `${this.basePath}/delete-many`, { ids }, headers);
127
145
  }
128
- /** Returns the HSM message usage and limit of an account. */
146
+ /**
147
+ * Returns the HSM message usage and limit of the account of the current user (send its
148
+ * `accountId`).
149
+ * @deprecated Use `WhatsappBusinessTemplatesApi.getHsmLimit` (the same route, outside
150
+ * `/campaigns`).
151
+ * @permissions hsm.view
152
+ */
129
153
  getHsmLimit(accountId, headers) {
130
154
  return this.client.get(`/whatsapp-business-templates/${accountId}/hsmLimit`, headers);
131
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CampaignsApi.cjs","names":["BaseCrudApi"],"sources":["../../../src/apis/campaigns/CampaignsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core'\nimport { BaseCrudApi } from '../../core'\nimport type {\n AutoPauseModePayload,\n Campaign,\n CampaignContactsPage,\n CampaignContactsQuery,\n CampaignListQuery,\n CampaignStats,\n CampaignTimelineEvent,\n CreateCampaignPayload,\n ExportCampaignImportErrorsQuery,\n ExportCampaignResultPayload,\n ExportTemplateCsvPayload,\n HsmLimit,\n SetIntervalPayload,\n UpdateCampaignPayload,\n} from './types'\n\n/**\n * Campaigns (mass sending). Every `/campaigns` route requires the campaigns feature in the plan of\n * the account.\n * `getMany` takes the `where` of a `ListQuery` and the flat filters of the Campaigns screen (see\n * {@link CampaignListQuery}); `getById` of an unknown id resolves `null`. `deleteById` answers the\n * text `'OK'`. `getMany({ paginate: false })` answers 400 `FILTER_PARAM_INVALID` with the default\n * `'json'` query format (the route only takes `paginate` as a string): use `withQueryFormat('qs')`.\n */\nexport class CampaignsApi extends BaseCrudApi<\n Campaign,\n CreateCampaignPayload,\n UpdateCampaignPayload,\n CampaignListQuery,\n 'OK'\n> {\n constructor(client: ApiClient) {\n super(client, '/campaigns')\n }\n\n /**\n * Starts sending the campaign: answers it as `processing` (an `import_error` campaign goes back\n * to `importing_contacts`). It becomes `done` once every contact is fired.\n * @permissions campaigns.view\n */\n sendById(id: string, headers?: Record<string, string>): Promise<Campaign> {\n return this.client.post<Campaign>(`${this.basePath}/${id}/send`, undefined, headers)\n }\n\n /**\n * Sets the campaign as `paused` and answers `true`. An unknown id answers 500.\n * @permissions campaigns.view\n */\n pauseById(id: string, headers?: Record<string, string>): Promise<boolean> {\n return this.client.post<boolean>(`${this.basePath}/${id}/pause`, undefined, headers)\n }\n\n /**\n * Sets the campaign back to `processing` and answers `true`. An unknown id answers 500.\n * @permissions campaigns.view\n */\n resumeById(id: string, headers?: Record<string, string>): Promise<boolean> {\n return this.client.post<boolean>(`${this.basePath}/${id}/resume`, undefined, headers)\n }\n\n /**\n * Fires again the messages that failed: sets them as pending and the campaign as `processing`.\n * Answers the text `'OK'` (also when nothing failed, and then the status does not change); an\n * unknown id answers `false` (status 200).\n * @permissions campaigns.view\n */\n retryById(id: string, headers?: Record<string, string>): Promise<'OK' | false> {\n return this.client.post<'OK' | false>(`${this.basePath}/${id}/retry`, undefined, headers)\n }\n\n /**\n * Creates a copy of the campaign (`ready`, same title, messages and tags), answered without the\n * messages. An unknown id answers 500.\n * @permissions campaigns.view\n */\n duplicateById(id: string, headers?: Record<string, string>): Promise<Campaign> {\n return this.client.post<Campaign>(`${this.basePath}/${id}/duplicate`, undefined, headers)\n }\n\n /** Returns the send, delivery and interaction statistics of the campaign. */\n getStatsById(id: string, headers?: Record<string, string>): Promise<CampaignStats> {\n return this.client.get<CampaignStats>(`${this.basePath}/${id}/stats`, headers)\n }\n\n /**\n * Returns the events of the campaign (created, scheduled, started, finished and the last\n * interruption), the most recent first.\n */\n getTimeline(id: string, headers?: Record<string, string>): Promise<CampaignTimelineEvent[]> {\n return this.client.get<CampaignTimelineEvent[]>(`${this.basePath}/${id}/timeline`, headers)\n }\n\n /**\n * Returns a page of the contacts of the campaign with their sending status (15 per page by\n * default). An unknown id answers an empty page.\n */\n getContacts(\n id: string,\n query?: CampaignContactsQuery,\n headers?: Record<string, string>,\n ): Promise<CampaignContactsPage> {\n return this.client.get<CampaignContactsPage>(\n `${this.basePath}/${id}/contacts${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * Sets the min/max interval between the sends (whole numbers, `0` or more) and answers `true`.\n * An unknown id answers 500.\n * @permissions campaigns.view\n */\n setIntervalById(\n id: string,\n data: SetIntervalPayload,\n headers?: Record<string, string>,\n ): Promise<boolean> {\n return this.client.post<boolean, SetIntervalPayload>(\n `${this.basePath}/${id}/interval`,\n data,\n headers,\n )\n }\n\n /** Returns the number of contacts targeted by the campaign. */\n getContactCount(id: string, headers?: Record<string, string>): Promise<number> {\n return this.client.get<number>(`${this.basePath}/${id}/contactCount`, headers)\n }\n\n /** Counts the `ready` campaigns of a connection. An unknown id counts 0. */\n countReadyByService(serviceId: string, headers?: Record<string, string>): Promise<number> {\n return this.client.get<number>(`${this.basePath}/count-ready/${serviceId}`, headers)\n }\n\n /**\n * Sets the auto-pause mode of the campaigns of the account (`settings.campaign`). Answers the\n * text `'OK'`, or `false` when the account was not updated.\n */\n setAutoPauseMode(\n data: AutoPauseModePayload,\n headers?: Record<string, string>,\n ): Promise<'OK' | false> {\n return this.client.put<'OK' | false, AutoPauseModePayload>(\n `${this.basePath}/autoPauseMode`,\n data,\n headers,\n )\n }\n\n /**\n * Exports the contacts of the campaign and their sending result as CSV (13 columns in the\n * language of the user; `,`, or `;` with `type: 'semiColon'`), streamed without a Content-Type.\n */\n exportCampaignResult(\n data: ExportCampaignResultPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, ExportCampaignResultPayload>(\n `${this.basePath}/export/csv`,\n data,\n headers,\n )\n }\n\n /** Exports the CSV (`;`) to fill in the contacts of a campaign of the given HSM template. */\n exportTemplateCsv(\n data: ExportTemplateCsvPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, ExportTemplateCsvPayload>(\n `${this.basePath}/exportTemplate`,\n data,\n headers,\n )\n }\n\n /**\n * Exports the rows of the import file that were not imported (invalid number, unknown or\n * ambiguous username) as CSV: line, name, number, username and reason.\n */\n exportImportErrors(\n id: string,\n query?: ExportCampaignImportErrorsQuery,\n headers?: Record<string, string>,\n ): Promise<string> {\n const queryString = query?.delimiter ? `?${qs.stringify({ delimiter: query.delimiter })}` : ''\n return this.client.get<string>(`${this.basePath}/${id}/import-errors${queryString}`, headers)\n }\n\n /**\n * Deletes the campaigns of the given ids and answers `true` (unknown ids are skipped). No id, or\n * an id that is not a UUID, answers 400 `{ error: 'Invalid ids', code: 'INVALID_IDS' }`.\n * @permissions campaigns.view OR campaigns.destroy\n */\n deleteMany(ids: string[], headers?: Record<string, string>): Promise<true> {\n return this.client.request<true, { ids: string[] }>(\n 'DELETE',\n `${this.basePath}/delete-many`,\n { ids },\n headers,\n )\n }\n\n /** Returns the HSM message usage and limit of an account. */\n getHsmLimit(accountId: string, headers?: Record<string, string>): Promise<HsmLimit> {\n return this.client.get<HsmLimit>(`/whatsapp-business-templates/${accountId}/hsmLimit`, headers)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA4BA,IAAa,eAAb,cAAkCA,qCAMhC;CACA,YAAY,QAAmB;AAC7B,QAAM,QAAQ,aAAa;;;;;;;CAQ7B,SAAS,IAAY,SAAqD;AACxE,SAAO,KAAK,OAAO,KAAe,GAAG,KAAK,SAAS,GAAG,GAAG,QAAQ,QAAW,QAAQ;;;;;;CAOtF,UAAU,IAAY,SAAoD;AACxE,SAAO,KAAK,OAAO,KAAc,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAW,QAAQ;;;;;;CAOtF,WAAW,IAAY,SAAoD;AACzE,SAAO,KAAK,OAAO,KAAc,GAAG,KAAK,SAAS,GAAG,GAAG,UAAU,QAAW,QAAQ;;;;;;;;CASvF,UAAU,IAAY,SAAyD;AAC7E,SAAO,KAAK,OAAO,KAAmB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAW,QAAQ;;;;;;;CAQ3F,cAAc,IAAY,SAAqD;AAC7E,SAAO,KAAK,OAAO,KAAe,GAAG,KAAK,SAAS,GAAG,GAAG,aAAa,QAAW,QAAQ;;;CAI3F,aAAa,IAAY,SAA0D;AACjF,SAAO,KAAK,OAAO,IAAmB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAQ;;;;;;CAOhF,YAAY,IAAY,SAAoE;AAC1F,SAAO,KAAK,OAAO,IAA6B,GAAG,KAAK,SAAS,GAAG,GAAG,YAAY,QAAQ;;;;;;CAO7F,YACE,IACA,OACA,SAC+B;AAC/B,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,GAAG,WAAW,KAAK,cAAc,MAAM,IAC3D,QACD;;;;;;;CAQH,gBACE,IACA,MACA,SACkB;AAClB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,YACvB,MACA,QACD;;;CAIH,gBAAgB,IAAY,SAAmD;AAC7E,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,GAAG,GAAG,gBAAgB,QAAQ;;;CAIhF,oBAAoB,WAAmB,SAAmD;AACxF,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,eAAe,aAAa,QAAQ;;;;;;CAOtF,iBACE,MACA,SACuB;AACvB,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,iBACjB,MACA,QACD;;;;;;CAOH,qBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,cACjB,MACA,QACD;;;CAIH,kBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,kBACjB,MACA,QACD;;;;;;CAOH,mBACE,IACA,OACA,SACiB;EACjB,MAAM,cAAc,OAAO,YAAY,IAAI,WAAG,UAAU,EAAE,WAAW,MAAM,WAAW,CAAC,KAAK;AAC5F,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,GAAG,GAAG,gBAAgB,eAAe,QAAQ;;;;;;;CAQ/F,WAAW,KAAe,SAAiD;AACzE,SAAO,KAAK,OAAO,QACjB,UACA,GAAG,KAAK,SAAS,eACjB,EAAE,KAAK,EACP,QACD;;;CAIH,YAAY,WAAmB,SAAqD;AAClF,SAAO,KAAK,OAAO,IAAc,gCAAgC,UAAU,YAAY,QAAQ"}
1
+ {"version":3,"file":"CampaignsApi.cjs","names":["BaseCrudApi"],"sources":["../../../src/apis/campaigns/CampaignsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient, Paginated } from '../../core'\nimport { BaseCrudApi } from '../../core'\nimport type {\n AutoPauseModePayload,\n Campaign,\n CampaignContactsPage,\n CampaignContactsQuery,\n CampaignListQuery,\n CampaignStats,\n CampaignTimelineEvent,\n CreateCampaignPayload,\n ExportCampaignImportErrorsQuery,\n ExportCampaignResultPayload,\n ExportTemplateCsvPayload,\n HsmLimit,\n SetIntervalPayload,\n UpdateCampaignPayload,\n} from './types'\n\n/**\n * Campaigns (mass sending). Every `/campaigns` route requires the campaigns feature in the plan of\n * the account.\n * `getMany` takes the `where` of a `ListQuery` and the flat filters of the Campaigns screen (see\n * {@link CampaignListQuery}); `getById` of an unknown id resolves `null`. `deleteById` answers the\n * text `'OK'`. `getMany({ paginate: false })` answers 400 `FILTER_PARAM_INVALID` with the default\n * `'json'` query format (the route only takes `paginate` as a string): use `withQueryFormat('qs')`.\n * `getOne` reads a page of one campaign, so it works with every query format.\n */\nexport class CampaignsApi extends BaseCrudApi<\n Campaign,\n CreateCampaignPayload,\n UpdateCampaignPayload,\n CampaignListQuery,\n 'OK'\n> {\n constructor(client: ApiClient) {\n super(client, '/campaigns')\n }\n\n /**\n * Returns the first campaign matching the query, or `null` when none match. Reads the first page\n * with one campaign (`page: 1`, `perPage: 1`: the `page` and `perPage` of the query are\n * replaced, and its `paginate` and `limit` are left out), so the campaign comes with the `stats`\n * of `getMany`.\n * @permissions campaigns.view\n */\n override async getOne(\n query?: CampaignListQuery,\n headers?: Record<string, string>,\n ): Promise<Campaign | null> {\n const pageQuery: CampaignListQuery = { ...query, page: 1, perPage: 1 }\n delete pageQuery.paginate\n delete pageQuery.limit\n const page = await this.client.get<Paginated<Campaign> | undefined>(\n `${this.basePath}${this.toQueryString(pageQuery)}`,\n headers,\n )\n // An empty response body resolves to `undefined`.\n return page?.data?.[0] ?? null\n }\n\n /**\n * Starts sending the campaign: answers it as `processing` (an `import_error` campaign goes back\n * to `importing_contacts`). It becomes `done` once every contact is fired.\n * @permissions campaigns.view\n */\n sendById(id: string, headers?: Record<string, string>): Promise<Campaign> {\n return this.client.post<Campaign>(`${this.basePath}/${id}/send`, undefined, headers)\n }\n\n /**\n * Sets the campaign as `paused` and answers `true`. An unknown id answers 500.\n * @permissions campaigns.view\n */\n pauseById(id: string, headers?: Record<string, string>): Promise<boolean> {\n return this.client.post<boolean>(`${this.basePath}/${id}/pause`, undefined, headers)\n }\n\n /**\n * Sets the campaign back to `processing` and answers `true`. An unknown id answers 500.\n * @permissions campaigns.view\n */\n resumeById(id: string, headers?: Record<string, string>): Promise<boolean> {\n return this.client.post<boolean>(`${this.basePath}/${id}/resume`, undefined, headers)\n }\n\n /**\n * Fires again the messages that failed: sets them as pending and the campaign as `processing`.\n * Answers the text `'OK'` (also when nothing failed, and then the status does not change); an\n * unknown id answers `false` (status 200).\n * @permissions campaigns.view\n */\n retryById(id: string, headers?: Record<string, string>): Promise<'OK' | false> {\n return this.client.post<'OK' | false>(`${this.basePath}/${id}/retry`, undefined, headers)\n }\n\n /**\n * Creates a copy of the campaign (`ready`, same title, messages and tags), answered without the\n * messages. An unknown id answers 500.\n * @permissions campaigns.view\n */\n duplicateById(id: string, headers?: Record<string, string>): Promise<Campaign> {\n return this.client.post<Campaign>(`${this.basePath}/${id}/duplicate`, undefined, headers)\n }\n\n /** Returns the send, delivery and interaction statistics of the campaign. */\n getStatsById(id: string, headers?: Record<string, string>): Promise<CampaignStats> {\n return this.client.get<CampaignStats>(`${this.basePath}/${id}/stats`, headers)\n }\n\n /**\n * Returns the events of the campaign (created, scheduled, started, finished and the last\n * interruption), the most recent first.\n */\n getTimeline(id: string, headers?: Record<string, string>): Promise<CampaignTimelineEvent[]> {\n return this.client.get<CampaignTimelineEvent[]>(`${this.basePath}/${id}/timeline`, headers)\n }\n\n /**\n * Returns a page of the contacts of the campaign with their sending status (15 per page by\n * default). An unknown id answers an empty page.\n */\n getContacts(\n id: string,\n query?: CampaignContactsQuery,\n headers?: Record<string, string>,\n ): Promise<CampaignContactsPage> {\n return this.client.get<CampaignContactsPage>(\n `${this.basePath}/${id}/contacts${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * Sets the min/max interval between the sends (whole numbers, `0` or more) and answers `true`.\n * An unknown id answers 500.\n * @permissions campaigns.view\n */\n setIntervalById(\n id: string,\n data: SetIntervalPayload,\n headers?: Record<string, string>,\n ): Promise<boolean> {\n return this.client.post<boolean, SetIntervalPayload>(\n `${this.basePath}/${id}/interval`,\n data,\n headers,\n )\n }\n\n /** Returns the number of contacts targeted by the campaign. */\n getContactCount(id: string, headers?: Record<string, string>): Promise<number> {\n return this.client.get<number>(`${this.basePath}/${id}/contactCount`, headers)\n }\n\n /** Counts the `ready` campaigns of a connection. An unknown id counts 0. */\n countReadyByService(serviceId: string, headers?: Record<string, string>): Promise<number> {\n return this.client.get<number>(`${this.basePath}/count-ready/${serviceId}`, headers)\n }\n\n /**\n * Sets the auto-pause mode of the campaigns of the account (`settings.campaign`). Answers the\n * text `'OK'`, or `false` when the account was not updated.\n */\n setAutoPauseMode(\n data: AutoPauseModePayload,\n headers?: Record<string, string>,\n ): Promise<'OK' | false> {\n return this.client.put<'OK' | false, AutoPauseModePayload>(\n `${this.basePath}/autoPauseMode`,\n data,\n headers,\n )\n }\n\n /**\n * Exports the contacts of the campaign and their sending result as CSV (13 columns in the\n * language of the user; `,`, or `;` with `type: 'semiColon'`), streamed without a Content-Type.\n */\n exportCampaignResult(\n data: ExportCampaignResultPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, ExportCampaignResultPayload>(\n `${this.basePath}/export/csv`,\n data,\n headers,\n )\n }\n\n /** Exports the CSV (`;`) to fill in the contacts of a campaign of the given HSM template. */\n exportTemplateCsv(\n data: ExportTemplateCsvPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, ExportTemplateCsvPayload>(\n `${this.basePath}/exportTemplate`,\n data,\n headers,\n )\n }\n\n /**\n * Exports the rows of the import file that were not imported (invalid number, unknown or\n * ambiguous username) as CSV: line, name, number, username and reason.\n */\n exportImportErrors(\n id: string,\n query?: ExportCampaignImportErrorsQuery,\n headers?: Record<string, string>,\n ): Promise<string> {\n const queryString = query?.delimiter ? `?${qs.stringify({ delimiter: query.delimiter })}` : ''\n return this.client.get<string>(`${this.basePath}/${id}/import-errors${queryString}`, headers)\n }\n\n /**\n * Deletes the campaigns of the given ids and answers `true` (unknown ids are skipped). No id, or\n * an id that is not a UUID, answers 400 `{ error: 'Invalid ids', code: 'INVALID_IDS' }`.\n * @permissions campaigns.view OR campaigns.destroy\n */\n deleteMany(ids: string[], headers?: Record<string, string>): Promise<true> {\n return this.client.request<true, { ids: string[] }>(\n 'DELETE',\n `${this.basePath}/delete-many`,\n { ids },\n headers,\n )\n }\n\n /**\n * Returns the HSM message usage and limit of the account of the current user (send its\n * `accountId`).\n * @deprecated Use `WhatsappBusinessTemplatesApi.getHsmLimit` (the same route, outside\n * `/campaigns`).\n * @permissions hsm.view\n */\n getHsmLimit(accountId: string, headers?: Record<string, string>): Promise<HsmLimit> {\n return this.client.get<HsmLimit>(`/whatsapp-business-templates/${accountId}/hsmLimit`, headers)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA6BA,IAAa,eAAb,cAAkCA,qCAMhC;CACA,YAAY,QAAmB;AAC7B,QAAM,QAAQ,aAAa;;;;;;;;;CAU7B,MAAe,OACb,OACA,SAC0B;EAC1B,MAAM,YAA+B;GAAE,GAAG;GAAO,MAAM;GAAG,SAAS;GAAG;AACtE,SAAO,UAAU;AACjB,SAAO,UAAU;AAMjB,UALa,MAAM,KAAK,OAAO,IAC7B,GAAG,KAAK,WAAW,KAAK,cAAc,UAAU,IAChD,QACD,GAEY,OAAO,MAAM;;;;;;;CAQ5B,SAAS,IAAY,SAAqD;AACxE,SAAO,KAAK,OAAO,KAAe,GAAG,KAAK,SAAS,GAAG,GAAG,QAAQ,QAAW,QAAQ;;;;;;CAOtF,UAAU,IAAY,SAAoD;AACxE,SAAO,KAAK,OAAO,KAAc,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAW,QAAQ;;;;;;CAOtF,WAAW,IAAY,SAAoD;AACzE,SAAO,KAAK,OAAO,KAAc,GAAG,KAAK,SAAS,GAAG,GAAG,UAAU,QAAW,QAAQ;;;;;;;;CASvF,UAAU,IAAY,SAAyD;AAC7E,SAAO,KAAK,OAAO,KAAmB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAW,QAAQ;;;;;;;CAQ3F,cAAc,IAAY,SAAqD;AAC7E,SAAO,KAAK,OAAO,KAAe,GAAG,KAAK,SAAS,GAAG,GAAG,aAAa,QAAW,QAAQ;;;CAI3F,aAAa,IAAY,SAA0D;AACjF,SAAO,KAAK,OAAO,IAAmB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAQ;;;;;;CAOhF,YAAY,IAAY,SAAoE;AAC1F,SAAO,KAAK,OAAO,IAA6B,GAAG,KAAK,SAAS,GAAG,GAAG,YAAY,QAAQ;;;;;;CAO7F,YACE,IACA,OACA,SAC+B;AAC/B,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,GAAG,WAAW,KAAK,cAAc,MAAM,IAC3D,QACD;;;;;;;CAQH,gBACE,IACA,MACA,SACkB;AAClB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,YACvB,MACA,QACD;;;CAIH,gBAAgB,IAAY,SAAmD;AAC7E,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,GAAG,GAAG,gBAAgB,QAAQ;;;CAIhF,oBAAoB,WAAmB,SAAmD;AACxF,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,eAAe,aAAa,QAAQ;;;;;;CAOtF,iBACE,MACA,SACuB;AACvB,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,iBACjB,MACA,QACD;;;;;;CAOH,qBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,cACjB,MACA,QACD;;;CAIH,kBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,kBACjB,MACA,QACD;;;;;;CAOH,mBACE,IACA,OACA,SACiB;EACjB,MAAM,cAAc,OAAO,YAAY,IAAI,WAAG,UAAU,EAAE,WAAW,MAAM,WAAW,CAAC,KAAK;AAC5F,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,GAAG,GAAG,gBAAgB,eAAe,QAAQ;;;;;;;CAQ/F,WAAW,KAAe,SAAiD;AACzE,SAAO,KAAK,OAAO,QACjB,UACA,GAAG,KAAK,SAAS,eACjB,EAAE,KAAK,EACP,QACD;;;;;;;;;CAUH,YAAY,WAAmB,SAAqD;AAClF,SAAO,KAAK,OAAO,IAAc,gCAAgC,UAAU,YAAY,QAAQ"}
@@ -8,9 +8,18 @@ import type { AutoPauseModePayload, Campaign, CampaignContactsPage, CampaignCont
8
8
  * {@link CampaignListQuery}); `getById` of an unknown id resolves `null`. `deleteById` answers the
9
9
  * text `'OK'`. `getMany({ paginate: false })` answers 400 `FILTER_PARAM_INVALID` with the default
10
10
  * `'json'` query format (the route only takes `paginate` as a string): use `withQueryFormat('qs')`.
11
+ * `getOne` reads a page of one campaign, so it works with every query format.
11
12
  */
12
13
  export declare class CampaignsApi extends BaseCrudApi<Campaign, CreateCampaignPayload, UpdateCampaignPayload, CampaignListQuery, 'OK'> {
13
14
  constructor(client: ApiClient);
15
+ /**
16
+ * Returns the first campaign matching the query, or `null` when none match. Reads the first page
17
+ * with one campaign (`page: 1`, `perPage: 1`: the `page` and `perPage` of the query are
18
+ * replaced, and its `paginate` and `limit` are left out), so the campaign comes with the `stats`
19
+ * of `getMany`.
20
+ * @permissions campaigns.view
21
+ */
22
+ getOne(query?: CampaignListQuery, headers?: Record<string, string>): Promise<Campaign | null>;
14
23
  /**
15
24
  * Starts sending the campaign: answers it as `processing` (an `import_error` campaign goes back
16
25
  * to `importing_contacts`). It becomes `done` once every contact is fired.
@@ -85,7 +94,13 @@ export declare class CampaignsApi extends BaseCrudApi<Campaign, CreateCampaignPa
85
94
  * @permissions campaigns.view OR campaigns.destroy
86
95
  */
87
96
  deleteMany(ids: string[], headers?: Record<string, string>): Promise<true>;
88
- /** Returns the HSM message usage and limit of an account. */
97
+ /**
98
+ * Returns the HSM message usage and limit of the account of the current user (send its
99
+ * `accountId`).
100
+ * @deprecated Use `WhatsappBusinessTemplatesApi.getHsmLimit` (the same route, outside
101
+ * `/campaigns`).
102
+ * @permissions hsm.view
103
+ */
89
104
  getHsmLimit(accountId: string, headers?: Record<string, string>): Promise<HsmLimit>;
90
105
  }
91
106
  //# sourceMappingURL=CampaignsApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CampaignsApi.d.ts","sourceRoot":"","sources":["../../../src/apis/campaigns/CampaignsApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CampaignsApi.d.ts","sourceRoot":"","sources":["../../../src/apis/campaigns/CampaignsApi.ts"],"names":[],"mappings":"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"}
@@ -10,12 +10,30 @@ import qs from "qs";
10
10
  * {@link CampaignListQuery}); `getById` of an unknown id resolves `null`. `deleteById` answers the
11
11
  * text `'OK'`. `getMany({ paginate: false })` answers 400 `FILTER_PARAM_INVALID` with the default
12
12
  * `'json'` query format (the route only takes `paginate` as a string): use `withQueryFormat('qs')`.
13
+ * `getOne` reads a page of one campaign, so it works with every query format.
13
14
  */
14
15
  var CampaignsApi = class extends BaseCrudApi {
15
16
  constructor(client) {
16
17
  super(client, "/campaigns");
17
18
  }
18
19
  /**
20
+ * Returns the first campaign matching the query, or `null` when none match. Reads the first page
21
+ * with one campaign (`page: 1`, `perPage: 1`: the `page` and `perPage` of the query are
22
+ * replaced, and its `paginate` and `limit` are left out), so the campaign comes with the `stats`
23
+ * of `getMany`.
24
+ * @permissions campaigns.view
25
+ */
26
+ async getOne(query, headers) {
27
+ const pageQuery = {
28
+ ...query,
29
+ page: 1,
30
+ perPage: 1
31
+ };
32
+ delete pageQuery.paginate;
33
+ delete pageQuery.limit;
34
+ return (await this.client.get(`${this.basePath}${this.toQueryString(pageQuery)}`, headers))?.data?.[0] ?? null;
35
+ }
36
+ /**
19
37
  * Starts sending the campaign: answers it as `processing` (an `import_error` campaign goes back
20
38
  * to `importing_contacts`). It becomes `done` once every contact is fired.
21
39
  * @permissions campaigns.view
@@ -122,7 +140,13 @@ var CampaignsApi = class extends BaseCrudApi {
122
140
  deleteMany(ids, headers) {
123
141
  return this.client.request("DELETE", `${this.basePath}/delete-many`, { ids }, headers);
124
142
  }
125
- /** Returns the HSM message usage and limit of an account. */
143
+ /**
144
+ * Returns the HSM message usage and limit of the account of the current user (send its
145
+ * `accountId`).
146
+ * @deprecated Use `WhatsappBusinessTemplatesApi.getHsmLimit` (the same route, outside
147
+ * `/campaigns`).
148
+ * @permissions hsm.view
149
+ */
126
150
  getHsmLimit(accountId, headers) {
127
151
  return this.client.get(`/whatsapp-business-templates/${accountId}/hsmLimit`, headers);
128
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CampaignsApi.mjs","names":[],"sources":["../../../src/apis/campaigns/CampaignsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient } from '../../core'\nimport { BaseCrudApi } from '../../core'\nimport type {\n AutoPauseModePayload,\n Campaign,\n CampaignContactsPage,\n CampaignContactsQuery,\n CampaignListQuery,\n CampaignStats,\n CampaignTimelineEvent,\n CreateCampaignPayload,\n ExportCampaignImportErrorsQuery,\n ExportCampaignResultPayload,\n ExportTemplateCsvPayload,\n HsmLimit,\n SetIntervalPayload,\n UpdateCampaignPayload,\n} from './types'\n\n/**\n * Campaigns (mass sending). Every `/campaigns` route requires the campaigns feature in the plan of\n * the account.\n * `getMany` takes the `where` of a `ListQuery` and the flat filters of the Campaigns screen (see\n * {@link CampaignListQuery}); `getById` of an unknown id resolves `null`. `deleteById` answers the\n * text `'OK'`. `getMany({ paginate: false })` answers 400 `FILTER_PARAM_INVALID` with the default\n * `'json'` query format (the route only takes `paginate` as a string): use `withQueryFormat('qs')`.\n */\nexport class CampaignsApi extends BaseCrudApi<\n Campaign,\n CreateCampaignPayload,\n UpdateCampaignPayload,\n CampaignListQuery,\n 'OK'\n> {\n constructor(client: ApiClient) {\n super(client, '/campaigns')\n }\n\n /**\n * Starts sending the campaign: answers it as `processing` (an `import_error` campaign goes back\n * to `importing_contacts`). It becomes `done` once every contact is fired.\n * @permissions campaigns.view\n */\n sendById(id: string, headers?: Record<string, string>): Promise<Campaign> {\n return this.client.post<Campaign>(`${this.basePath}/${id}/send`, undefined, headers)\n }\n\n /**\n * Sets the campaign as `paused` and answers `true`. An unknown id answers 500.\n * @permissions campaigns.view\n */\n pauseById(id: string, headers?: Record<string, string>): Promise<boolean> {\n return this.client.post<boolean>(`${this.basePath}/${id}/pause`, undefined, headers)\n }\n\n /**\n * Sets the campaign back to `processing` and answers `true`. An unknown id answers 500.\n * @permissions campaigns.view\n */\n resumeById(id: string, headers?: Record<string, string>): Promise<boolean> {\n return this.client.post<boolean>(`${this.basePath}/${id}/resume`, undefined, headers)\n }\n\n /**\n * Fires again the messages that failed: sets them as pending and the campaign as `processing`.\n * Answers the text `'OK'` (also when nothing failed, and then the status does not change); an\n * unknown id answers `false` (status 200).\n * @permissions campaigns.view\n */\n retryById(id: string, headers?: Record<string, string>): Promise<'OK' | false> {\n return this.client.post<'OK' | false>(`${this.basePath}/${id}/retry`, undefined, headers)\n }\n\n /**\n * Creates a copy of the campaign (`ready`, same title, messages and tags), answered without the\n * messages. An unknown id answers 500.\n * @permissions campaigns.view\n */\n duplicateById(id: string, headers?: Record<string, string>): Promise<Campaign> {\n return this.client.post<Campaign>(`${this.basePath}/${id}/duplicate`, undefined, headers)\n }\n\n /** Returns the send, delivery and interaction statistics of the campaign. */\n getStatsById(id: string, headers?: Record<string, string>): Promise<CampaignStats> {\n return this.client.get<CampaignStats>(`${this.basePath}/${id}/stats`, headers)\n }\n\n /**\n * Returns the events of the campaign (created, scheduled, started, finished and the last\n * interruption), the most recent first.\n */\n getTimeline(id: string, headers?: Record<string, string>): Promise<CampaignTimelineEvent[]> {\n return this.client.get<CampaignTimelineEvent[]>(`${this.basePath}/${id}/timeline`, headers)\n }\n\n /**\n * Returns a page of the contacts of the campaign with their sending status (15 per page by\n * default). An unknown id answers an empty page.\n */\n getContacts(\n id: string,\n query?: CampaignContactsQuery,\n headers?: Record<string, string>,\n ): Promise<CampaignContactsPage> {\n return this.client.get<CampaignContactsPage>(\n `${this.basePath}/${id}/contacts${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * Sets the min/max interval between the sends (whole numbers, `0` or more) and answers `true`.\n * An unknown id answers 500.\n * @permissions campaigns.view\n */\n setIntervalById(\n id: string,\n data: SetIntervalPayload,\n headers?: Record<string, string>,\n ): Promise<boolean> {\n return this.client.post<boolean, SetIntervalPayload>(\n `${this.basePath}/${id}/interval`,\n data,\n headers,\n )\n }\n\n /** Returns the number of contacts targeted by the campaign. */\n getContactCount(id: string, headers?: Record<string, string>): Promise<number> {\n return this.client.get<number>(`${this.basePath}/${id}/contactCount`, headers)\n }\n\n /** Counts the `ready` campaigns of a connection. An unknown id counts 0. */\n countReadyByService(serviceId: string, headers?: Record<string, string>): Promise<number> {\n return this.client.get<number>(`${this.basePath}/count-ready/${serviceId}`, headers)\n }\n\n /**\n * Sets the auto-pause mode of the campaigns of the account (`settings.campaign`). Answers the\n * text `'OK'`, or `false` when the account was not updated.\n */\n setAutoPauseMode(\n data: AutoPauseModePayload,\n headers?: Record<string, string>,\n ): Promise<'OK' | false> {\n return this.client.put<'OK' | false, AutoPauseModePayload>(\n `${this.basePath}/autoPauseMode`,\n data,\n headers,\n )\n }\n\n /**\n * Exports the contacts of the campaign and their sending result as CSV (13 columns in the\n * language of the user; `,`, or `;` with `type: 'semiColon'`), streamed without a Content-Type.\n */\n exportCampaignResult(\n data: ExportCampaignResultPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, ExportCampaignResultPayload>(\n `${this.basePath}/export/csv`,\n data,\n headers,\n )\n }\n\n /** Exports the CSV (`;`) to fill in the contacts of a campaign of the given HSM template. */\n exportTemplateCsv(\n data: ExportTemplateCsvPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, ExportTemplateCsvPayload>(\n `${this.basePath}/exportTemplate`,\n data,\n headers,\n )\n }\n\n /**\n * Exports the rows of the import file that were not imported (invalid number, unknown or\n * ambiguous username) as CSV: line, name, number, username and reason.\n */\n exportImportErrors(\n id: string,\n query?: ExportCampaignImportErrorsQuery,\n headers?: Record<string, string>,\n ): Promise<string> {\n const queryString = query?.delimiter ? `?${qs.stringify({ delimiter: query.delimiter })}` : ''\n return this.client.get<string>(`${this.basePath}/${id}/import-errors${queryString}`, headers)\n }\n\n /**\n * Deletes the campaigns of the given ids and answers `true` (unknown ids are skipped). No id, or\n * an id that is not a UUID, answers 400 `{ error: 'Invalid ids', code: 'INVALID_IDS' }`.\n * @permissions campaigns.view OR campaigns.destroy\n */\n deleteMany(ids: string[], headers?: Record<string, string>): Promise<true> {\n return this.client.request<true, { ids: string[] }>(\n 'DELETE',\n `${this.basePath}/delete-many`,\n { ids },\n headers,\n )\n }\n\n /** Returns the HSM message usage and limit of an account. */\n getHsmLimit(accountId: string, headers?: Record<string, string>): Promise<HsmLimit> {\n return this.client.get<HsmLimit>(`/whatsapp-business-templates/${accountId}/hsmLimit`, headers)\n }\n}\n"],"mappings":";;;;;;;;;;;;;AA4BA,IAAa,eAAb,cAAkC,YAMhC;CACA,YAAY,QAAmB;AAC7B,QAAM,QAAQ,aAAa;;;;;;;CAQ7B,SAAS,IAAY,SAAqD;AACxE,SAAO,KAAK,OAAO,KAAe,GAAG,KAAK,SAAS,GAAG,GAAG,QAAQ,QAAW,QAAQ;;;;;;CAOtF,UAAU,IAAY,SAAoD;AACxE,SAAO,KAAK,OAAO,KAAc,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAW,QAAQ;;;;;;CAOtF,WAAW,IAAY,SAAoD;AACzE,SAAO,KAAK,OAAO,KAAc,GAAG,KAAK,SAAS,GAAG,GAAG,UAAU,QAAW,QAAQ;;;;;;;;CASvF,UAAU,IAAY,SAAyD;AAC7E,SAAO,KAAK,OAAO,KAAmB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAW,QAAQ;;;;;;;CAQ3F,cAAc,IAAY,SAAqD;AAC7E,SAAO,KAAK,OAAO,KAAe,GAAG,KAAK,SAAS,GAAG,GAAG,aAAa,QAAW,QAAQ;;;CAI3F,aAAa,IAAY,SAA0D;AACjF,SAAO,KAAK,OAAO,IAAmB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAQ;;;;;;CAOhF,YAAY,IAAY,SAAoE;AAC1F,SAAO,KAAK,OAAO,IAA6B,GAAG,KAAK,SAAS,GAAG,GAAG,YAAY,QAAQ;;;;;;CAO7F,YACE,IACA,OACA,SAC+B;AAC/B,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,GAAG,WAAW,KAAK,cAAc,MAAM,IAC3D,QACD;;;;;;;CAQH,gBACE,IACA,MACA,SACkB;AAClB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,YACvB,MACA,QACD;;;CAIH,gBAAgB,IAAY,SAAmD;AAC7E,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,GAAG,GAAG,gBAAgB,QAAQ;;;CAIhF,oBAAoB,WAAmB,SAAmD;AACxF,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,eAAe,aAAa,QAAQ;;;;;;CAOtF,iBACE,MACA,SACuB;AACvB,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,iBACjB,MACA,QACD;;;;;;CAOH,qBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,cACjB,MACA,QACD;;;CAIH,kBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,kBACjB,MACA,QACD;;;;;;CAOH,mBACE,IACA,OACA,SACiB;EACjB,MAAM,cAAc,OAAO,YAAY,IAAI,GAAG,UAAU,EAAE,WAAW,MAAM,WAAW,CAAC,KAAK;AAC5F,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,GAAG,GAAG,gBAAgB,eAAe,QAAQ;;;;;;;CAQ/F,WAAW,KAAe,SAAiD;AACzE,SAAO,KAAK,OAAO,QACjB,UACA,GAAG,KAAK,SAAS,eACjB,EAAE,KAAK,EACP,QACD;;;CAIH,YAAY,WAAmB,SAAqD;AAClF,SAAO,KAAK,OAAO,IAAc,gCAAgC,UAAU,YAAY,QAAQ"}
1
+ {"version":3,"file":"CampaignsApi.mjs","names":[],"sources":["../../../src/apis/campaigns/CampaignsApi.ts"],"sourcesContent":["import qs from 'qs'\nimport type { ApiClient, Paginated } from '../../core'\nimport { BaseCrudApi } from '../../core'\nimport type {\n AutoPauseModePayload,\n Campaign,\n CampaignContactsPage,\n CampaignContactsQuery,\n CampaignListQuery,\n CampaignStats,\n CampaignTimelineEvent,\n CreateCampaignPayload,\n ExportCampaignImportErrorsQuery,\n ExportCampaignResultPayload,\n ExportTemplateCsvPayload,\n HsmLimit,\n SetIntervalPayload,\n UpdateCampaignPayload,\n} from './types'\n\n/**\n * Campaigns (mass sending). Every `/campaigns` route requires the campaigns feature in the plan of\n * the account.\n * `getMany` takes the `where` of a `ListQuery` and the flat filters of the Campaigns screen (see\n * {@link CampaignListQuery}); `getById` of an unknown id resolves `null`. `deleteById` answers the\n * text `'OK'`. `getMany({ paginate: false })` answers 400 `FILTER_PARAM_INVALID` with the default\n * `'json'` query format (the route only takes `paginate` as a string): use `withQueryFormat('qs')`.\n * `getOne` reads a page of one campaign, so it works with every query format.\n */\nexport class CampaignsApi extends BaseCrudApi<\n Campaign,\n CreateCampaignPayload,\n UpdateCampaignPayload,\n CampaignListQuery,\n 'OK'\n> {\n constructor(client: ApiClient) {\n super(client, '/campaigns')\n }\n\n /**\n * Returns the first campaign matching the query, or `null` when none match. Reads the first page\n * with one campaign (`page: 1`, `perPage: 1`: the `page` and `perPage` of the query are\n * replaced, and its `paginate` and `limit` are left out), so the campaign comes with the `stats`\n * of `getMany`.\n * @permissions campaigns.view\n */\n override async getOne(\n query?: CampaignListQuery,\n headers?: Record<string, string>,\n ): Promise<Campaign | null> {\n const pageQuery: CampaignListQuery = { ...query, page: 1, perPage: 1 }\n delete pageQuery.paginate\n delete pageQuery.limit\n const page = await this.client.get<Paginated<Campaign> | undefined>(\n `${this.basePath}${this.toQueryString(pageQuery)}`,\n headers,\n )\n // An empty response body resolves to `undefined`.\n return page?.data?.[0] ?? null\n }\n\n /**\n * Starts sending the campaign: answers it as `processing` (an `import_error` campaign goes back\n * to `importing_contacts`). It becomes `done` once every contact is fired.\n * @permissions campaigns.view\n */\n sendById(id: string, headers?: Record<string, string>): Promise<Campaign> {\n return this.client.post<Campaign>(`${this.basePath}/${id}/send`, undefined, headers)\n }\n\n /**\n * Sets the campaign as `paused` and answers `true`. An unknown id answers 500.\n * @permissions campaigns.view\n */\n pauseById(id: string, headers?: Record<string, string>): Promise<boolean> {\n return this.client.post<boolean>(`${this.basePath}/${id}/pause`, undefined, headers)\n }\n\n /**\n * Sets the campaign back to `processing` and answers `true`. An unknown id answers 500.\n * @permissions campaigns.view\n */\n resumeById(id: string, headers?: Record<string, string>): Promise<boolean> {\n return this.client.post<boolean>(`${this.basePath}/${id}/resume`, undefined, headers)\n }\n\n /**\n * Fires again the messages that failed: sets them as pending and the campaign as `processing`.\n * Answers the text `'OK'` (also when nothing failed, and then the status does not change); an\n * unknown id answers `false` (status 200).\n * @permissions campaigns.view\n */\n retryById(id: string, headers?: Record<string, string>): Promise<'OK' | false> {\n return this.client.post<'OK' | false>(`${this.basePath}/${id}/retry`, undefined, headers)\n }\n\n /**\n * Creates a copy of the campaign (`ready`, same title, messages and tags), answered without the\n * messages. An unknown id answers 500.\n * @permissions campaigns.view\n */\n duplicateById(id: string, headers?: Record<string, string>): Promise<Campaign> {\n return this.client.post<Campaign>(`${this.basePath}/${id}/duplicate`, undefined, headers)\n }\n\n /** Returns the send, delivery and interaction statistics of the campaign. */\n getStatsById(id: string, headers?: Record<string, string>): Promise<CampaignStats> {\n return this.client.get<CampaignStats>(`${this.basePath}/${id}/stats`, headers)\n }\n\n /**\n * Returns the events of the campaign (created, scheduled, started, finished and the last\n * interruption), the most recent first.\n */\n getTimeline(id: string, headers?: Record<string, string>): Promise<CampaignTimelineEvent[]> {\n return this.client.get<CampaignTimelineEvent[]>(`${this.basePath}/${id}/timeline`, headers)\n }\n\n /**\n * Returns a page of the contacts of the campaign with their sending status (15 per page by\n * default). An unknown id answers an empty page.\n */\n getContacts(\n id: string,\n query?: CampaignContactsQuery,\n headers?: Record<string, string>,\n ): Promise<CampaignContactsPage> {\n return this.client.get<CampaignContactsPage>(\n `${this.basePath}/${id}/contacts${this.toQueryString(query)}`,\n headers,\n )\n }\n\n /**\n * Sets the min/max interval between the sends (whole numbers, `0` or more) and answers `true`.\n * An unknown id answers 500.\n * @permissions campaigns.view\n */\n setIntervalById(\n id: string,\n data: SetIntervalPayload,\n headers?: Record<string, string>,\n ): Promise<boolean> {\n return this.client.post<boolean, SetIntervalPayload>(\n `${this.basePath}/${id}/interval`,\n data,\n headers,\n )\n }\n\n /** Returns the number of contacts targeted by the campaign. */\n getContactCount(id: string, headers?: Record<string, string>): Promise<number> {\n return this.client.get<number>(`${this.basePath}/${id}/contactCount`, headers)\n }\n\n /** Counts the `ready` campaigns of a connection. An unknown id counts 0. */\n countReadyByService(serviceId: string, headers?: Record<string, string>): Promise<number> {\n return this.client.get<number>(`${this.basePath}/count-ready/${serviceId}`, headers)\n }\n\n /**\n * Sets the auto-pause mode of the campaigns of the account (`settings.campaign`). Answers the\n * text `'OK'`, or `false` when the account was not updated.\n */\n setAutoPauseMode(\n data: AutoPauseModePayload,\n headers?: Record<string, string>,\n ): Promise<'OK' | false> {\n return this.client.put<'OK' | false, AutoPauseModePayload>(\n `${this.basePath}/autoPauseMode`,\n data,\n headers,\n )\n }\n\n /**\n * Exports the contacts of the campaign and their sending result as CSV (13 columns in the\n * language of the user; `,`, or `;` with `type: 'semiColon'`), streamed without a Content-Type.\n */\n exportCampaignResult(\n data: ExportCampaignResultPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, ExportCampaignResultPayload>(\n `${this.basePath}/export/csv`,\n data,\n headers,\n )\n }\n\n /** Exports the CSV (`;`) to fill in the contacts of a campaign of the given HSM template. */\n exportTemplateCsv(\n data: ExportTemplateCsvPayload,\n headers?: Record<string, string>,\n ): Promise<string> {\n return this.client.post<string, ExportTemplateCsvPayload>(\n `${this.basePath}/exportTemplate`,\n data,\n headers,\n )\n }\n\n /**\n * Exports the rows of the import file that were not imported (invalid number, unknown or\n * ambiguous username) as CSV: line, name, number, username and reason.\n */\n exportImportErrors(\n id: string,\n query?: ExportCampaignImportErrorsQuery,\n headers?: Record<string, string>,\n ): Promise<string> {\n const queryString = query?.delimiter ? `?${qs.stringify({ delimiter: query.delimiter })}` : ''\n return this.client.get<string>(`${this.basePath}/${id}/import-errors${queryString}`, headers)\n }\n\n /**\n * Deletes the campaigns of the given ids and answers `true` (unknown ids are skipped). No id, or\n * an id that is not a UUID, answers 400 `{ error: 'Invalid ids', code: 'INVALID_IDS' }`.\n * @permissions campaigns.view OR campaigns.destroy\n */\n deleteMany(ids: string[], headers?: Record<string, string>): Promise<true> {\n return this.client.request<true, { ids: string[] }>(\n 'DELETE',\n `${this.basePath}/delete-many`,\n { ids },\n headers,\n )\n }\n\n /**\n * Returns the HSM message usage and limit of the account of the current user (send its\n * `accountId`).\n * @deprecated Use `WhatsappBusinessTemplatesApi.getHsmLimit` (the same route, outside\n * `/campaigns`).\n * @permissions hsm.view\n */\n getHsmLimit(accountId: string, headers?: Record<string, string>): Promise<HsmLimit> {\n return this.client.get<HsmLimit>(`/whatsapp-business-templates/${accountId}/hsmLimit`, headers)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AA6BA,IAAa,eAAb,cAAkC,YAMhC;CACA,YAAY,QAAmB;AAC7B,QAAM,QAAQ,aAAa;;;;;;;;;CAU7B,MAAe,OACb,OACA,SAC0B;EAC1B,MAAM,YAA+B;GAAE,GAAG;GAAO,MAAM;GAAG,SAAS;GAAG;AACtE,SAAO,UAAU;AACjB,SAAO,UAAU;AAMjB,UALa,MAAM,KAAK,OAAO,IAC7B,GAAG,KAAK,WAAW,KAAK,cAAc,UAAU,IAChD,QACD,GAEY,OAAO,MAAM;;;;;;;CAQ5B,SAAS,IAAY,SAAqD;AACxE,SAAO,KAAK,OAAO,KAAe,GAAG,KAAK,SAAS,GAAG,GAAG,QAAQ,QAAW,QAAQ;;;;;;CAOtF,UAAU,IAAY,SAAoD;AACxE,SAAO,KAAK,OAAO,KAAc,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAW,QAAQ;;;;;;CAOtF,WAAW,IAAY,SAAoD;AACzE,SAAO,KAAK,OAAO,KAAc,GAAG,KAAK,SAAS,GAAG,GAAG,UAAU,QAAW,QAAQ;;;;;;;;CASvF,UAAU,IAAY,SAAyD;AAC7E,SAAO,KAAK,OAAO,KAAmB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAW,QAAQ;;;;;;;CAQ3F,cAAc,IAAY,SAAqD;AAC7E,SAAO,KAAK,OAAO,KAAe,GAAG,KAAK,SAAS,GAAG,GAAG,aAAa,QAAW,QAAQ;;;CAI3F,aAAa,IAAY,SAA0D;AACjF,SAAO,KAAK,OAAO,IAAmB,GAAG,KAAK,SAAS,GAAG,GAAG,SAAS,QAAQ;;;;;;CAOhF,YAAY,IAAY,SAAoE;AAC1F,SAAO,KAAK,OAAO,IAA6B,GAAG,KAAK,SAAS,GAAG,GAAG,YAAY,QAAQ;;;;;;CAO7F,YACE,IACA,OACA,SAC+B;AAC/B,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,GAAG,GAAG,WAAW,KAAK,cAAc,MAAM,IAC3D,QACD;;;;;;;CAQH,gBACE,IACA,MACA,SACkB;AAClB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,GAAG,GAAG,YACvB,MACA,QACD;;;CAIH,gBAAgB,IAAY,SAAmD;AAC7E,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,GAAG,GAAG,gBAAgB,QAAQ;;;CAIhF,oBAAoB,WAAmB,SAAmD;AACxF,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,eAAe,aAAa,QAAQ;;;;;;CAOtF,iBACE,MACA,SACuB;AACvB,SAAO,KAAK,OAAO,IACjB,GAAG,KAAK,SAAS,iBACjB,MACA,QACD;;;;;;CAOH,qBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,cACjB,MACA,QACD;;;CAIH,kBACE,MACA,SACiB;AACjB,SAAO,KAAK,OAAO,KACjB,GAAG,KAAK,SAAS,kBACjB,MACA,QACD;;;;;;CAOH,mBACE,IACA,OACA,SACiB;EACjB,MAAM,cAAc,OAAO,YAAY,IAAI,GAAG,UAAU,EAAE,WAAW,MAAM,WAAW,CAAC,KAAK;AAC5F,SAAO,KAAK,OAAO,IAAY,GAAG,KAAK,SAAS,GAAG,GAAG,gBAAgB,eAAe,QAAQ;;;;;;;CAQ/F,WAAW,KAAe,SAAiD;AACzE,SAAO,KAAK,OAAO,QACjB,UACA,GAAG,KAAK,SAAS,eACjB,EAAE,KAAK,EACP,QACD;;;;;;;;;CAUH,YAAY,WAAmB,SAAqD;AAClF,SAAO,KAAK,OAAO,IAAc,gCAAgC,UAAU,YAAY,QAAQ"}
@@ -19,6 +19,8 @@ export type CampaignConfig = {
19
19
  nameField?: string;
20
20
  /** Column name in the import file used as the phone number. */
21
21
  numberField?: string;
22
+ /** Column name in the import file used as the username (contacts known only by it). */
23
+ usernameField?: string;
22
24
  delimiter?: ',' | ';' | ':' | string;
23
25
  error?: {
24
26
  message: string;
@@ -49,7 +51,10 @@ export type Campaign = {
49
51
  marketingIntegration?: boolean;
50
52
  /** Always `null`: the campaign has no such column (answered by the transformer). */
51
53
  userId?: null;
52
- /** Only in `getMany`: messages sent and viewed (ack 3). */
54
+ /**
55
+ * In the pages of `getMany` (not with `paginate: false`) and in `getOne`: messages sent and
56
+ * viewed (ack 3).
57
+ */
53
58
  stats?: {
54
59
  sent: number;
55
60
  viewed: number;
@@ -90,9 +95,20 @@ export type CampaignMessage = {
90
95
  hsm?: WhatsappBusinessTemplate | null;
91
96
  };
92
97
  export type CampaignRelationships = 'service' | 'defaultDepartment' | 'defaultUser' | 'createdBy' | 'sentBy' | 'tags' | 'messages' | 'importFile';
98
+ /** The media of a header parameter of the template (send it as `{ link: '<url>' }`). */
99
+ export type CampaignTemplateMedia = {
100
+ link?: string;
101
+ };
102
+ /**
103
+ * A parameter of the template: `text`, or the media of its `type` (`image`, `video` or
104
+ * `document`).
105
+ */
93
106
  export type CampaignTemplateParameterItem = {
94
107
  type: string;
95
108
  text?: string;
109
+ image?: CampaignTemplateMedia;
110
+ video?: CampaignTemplateMedia;
111
+ document?: CampaignTemplateMedia;
96
112
  };
97
113
  export type CampaignTemplateParameter = {
98
114
  type: string;
@@ -106,6 +122,14 @@ export type CampaignFileTemplate = {
106
122
  mimetype?: string;
107
123
  name?: string;
108
124
  };
125
+ /** A message of the campaign to create (without `hsm`, the campaign sends these). */
126
+ export type CampaignMessageInput = {
127
+ text?: string;
128
+ /** The attachment of the message, as a data URL (`data:<mimetype>;base64,<content>`). */
129
+ base64Url?: string;
130
+ /** @deprecated Ignored by the backend: send the attachment as `base64Url`. */
131
+ fileId?: string;
132
+ };
109
133
  export type CreateCampaignPayload = {
110
134
  title: string;
111
135
  serviceId: string;
@@ -114,26 +138,94 @@ export type CreateCampaignPayload = {
114
138
  maxInterval: number | string;
115
139
  };
116
140
  tagIds?: string[];
117
- messages?: {
118
- text?: string;
119
- fileId?: string;
120
- }[];
141
+ messages?: CampaignMessageInput[];
142
+ /** On create, replaces the `text` of every message (and is the text of the template message). */
143
+ text?: string;
121
144
  isScheduled?: boolean;
122
145
  sendsAt?: string | null;
123
146
  mustOpenTicket?: boolean;
124
147
  defaultDepartmentId?: string | null;
125
148
  defaultUserId?: string | null;
149
+ /** @deprecated Ignored by the backend: the contacts come from `tagIds` or the import `fileId`. */
126
150
  contacts?: Record<string, string>[];
151
+ /** @deprecated Ignored by the backend: the contacts come from `tagIds` or the import `fileId`. */
127
152
  useTags?: boolean;
153
+ /**
154
+ * On create, the import file (CSV) of the contacts, uploaded with
155
+ * `attachedType: 'campaign.file'`. The columns are read by `nameField`, `numberField` and
156
+ * `usernameField`.
157
+ */
128
158
  fileId?: string;
159
+ /** On create, stored in `config.nameField` (a `config.nameField` sent here is replaced). */
129
160
  nameField?: string;
161
+ /** On create, stored in `config.numberField` (a `config.numberField` sent here is replaced). */
130
162
  numberField?: string;
163
+ /** Stored in `config.usernameField` (a `config.usernameField` sent here is replaced). */
164
+ usernameField?: string;
165
+ /**
166
+ * The template to send. On create, the campaign gets one message of it and `messages` is not
167
+ * read.
168
+ */
131
169
  hsm?: WhatsappBusinessTemplate;
132
170
  parameters?: CampaignTemplateParameter[];
171
+ /**
172
+ * The header file of the template message (only with `hsm`), already uploaded. Takes precedence
173
+ * over `fileTemplate`.
174
+ */
175
+ hsmFileId?: string;
176
+ /**
177
+ * The header media of the template message: `base64Url` as a data URL, with its `mimetype`
178
+ * (required on create) and `name`. On create, read only when `tagIds` is sent (an empty array is
179
+ * enough); with the import `fileId`, prefer `hsmFileId`. On update, it only replaces the header
180
+ * file the template message already has: send it only with a new data URL, and leave it out to
181
+ * keep the header.
182
+ */
133
183
  fileTemplate?: CampaignFileTemplate;
134
184
  marketingIntegration?: boolean;
135
185
  };
136
- export type UpdateCampaignPayload = Partial<CreateCampaignPayload>;
186
+ /**
187
+ * A message of `updateById`. With the `id` of an existing message, the message gets the `text`
188
+ * sent; without `id`, it is created (and `base64Url` is read as in the create).
189
+ */
190
+ export type UpdateCampaignMessageInput = CampaignMessageInput & {
191
+ id?: string;
192
+ /**
193
+ * On WhatsApp connections, keeps the attachment of an existing message (send the `file` of the
194
+ * message read); with `file`, `base64Url` is not read. Without `file` and `base64Url`, the
195
+ * attachment is removed.
196
+ */
197
+ file?: unknown;
198
+ /**
199
+ * On WhatsApp connections, the name of the new attachment in `base64Url`: to replace the
200
+ * attachment of an existing message, send `base64Url` with a new name and without `file`.
201
+ */
202
+ fileName?: string;
203
+ };
204
+ /**
205
+ * `updateById` (`PUT`). A non-empty `messages` replaces the messages: the ones with the `id` of an
206
+ * existing message update it, the ones without `id` are created and the existing ones left out are
207
+ * deleted (omitted, or `[]`, keeps them).
208
+ *
209
+ * Send `isScheduled` (with `sendsAt`) and `mustOpenTicket` (with `defaultDepartmentId` and
210
+ * `defaultUserId`) on every call: without `isScheduled: true`, `sendsAt` is stored as `null` and a
211
+ * scheduled campaign is no longer started at the date; without `mustOpenTicket: true`, the default
212
+ * department and user are cleared.
213
+ *
214
+ * On WhatsApp Business connections, send the existing message by its `id` (a message without `id`
215
+ * is created without the template), together with `hsm` and `parameters`: every update that sends
216
+ * `messages` or `hsm` rewrites both on the existing messages (a missing one is stored empty).
217
+ */
218
+ export type UpdateCampaignPayload = Omit<Partial<CreateCampaignPayload>, 'text' | 'usernameField' | 'hsmFileId' | 'messages' | 'config'> & {
219
+ /**
220
+ * Replaces the stored config as a whole. `minInterval` and `maxInterval` go as strings (a number
221
+ * answers 400).
222
+ */
223
+ config?: {
224
+ minInterval: number | string;
225
+ maxInterval: number | string;
226
+ };
227
+ messages?: UpdateCampaignMessageInput[];
228
+ };
137
229
  /** The visible states the `status` filter of `getMany` takes (`'scheduled'` is derived from `isScheduled` + `sendsAt`). */
138
230
  export type CampaignListStatus = CampaignStatus | 'scheduled';
139
231
  /**