@zavudev/sdk 0.55.0 → 0.56.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 (273) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/client.d.mts +25 -10
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +25 -10
  5. package/client.d.ts.map +1 -1
  6. package/client.js +15 -0
  7. package/client.js.map +1 -1
  8. package/client.mjs +15 -0
  9. package/client.mjs.map +1 -1
  10. package/package.json +1 -1
  11. package/resources/agent-templates.d.mts +97 -0
  12. package/resources/agent-templates.d.mts.map +1 -0
  13. package/resources/agent-templates.d.ts +97 -0
  14. package/resources/agent-templates.d.ts.map +1 -0
  15. package/resources/agent-templates.js +39 -0
  16. package/resources/agent-templates.js.map +1 -0
  17. package/resources/agent-templates.mjs +35 -0
  18. package/resources/agent-templates.mjs.map +1 -0
  19. package/resources/agents/agents.d.mts +462 -0
  20. package/resources/agents/agents.d.mts.map +1 -0
  21. package/resources/agents/agents.d.ts +462 -0
  22. package/resources/agents/agents.d.ts.map +1 -0
  23. package/resources/agents/agents.js +129 -0
  24. package/resources/agents/agents.js.map +1 -0
  25. package/resources/agents/agents.mjs +124 -0
  26. package/resources/agents/agents.mjs.map +1 -0
  27. package/resources/agents/index.d.mts +3 -0
  28. package/resources/agents/index.d.mts.map +1 -0
  29. package/resources/agents/index.d.ts +3 -0
  30. package/resources/agents/index.d.ts.map +1 -0
  31. package/resources/agents/index.js +9 -0
  32. package/resources/agents/index.js.map +1 -0
  33. package/resources/agents/index.mjs +4 -0
  34. package/resources/agents/index.mjs.map +1 -0
  35. package/resources/agents/senders.d.mts +54 -0
  36. package/resources/agents/senders.d.mts.map +1 -0
  37. package/resources/agents/senders.d.ts +54 -0
  38. package/resources/agents/senders.d.ts.map +1 -0
  39. package/resources/agents/senders.js +45 -0
  40. package/resources/agents/senders.js.map +1 -0
  41. package/resources/agents/senders.mjs +41 -0
  42. package/resources/agents/senders.mjs.map +1 -0
  43. package/resources/agents.d.mts +2 -0
  44. package/resources/agents.d.mts.map +1 -0
  45. package/resources/agents.d.ts +2 -0
  46. package/resources/agents.d.ts.map +1 -0
  47. package/resources/agents.js +6 -0
  48. package/resources/agents.js.map +1 -0
  49. package/resources/agents.mjs +3 -0
  50. package/resources/agents.mjs.map +1 -0
  51. package/resources/calls.d.mts +530 -0
  52. package/resources/calls.d.mts.map +1 -0
  53. package/resources/calls.d.ts +530 -0
  54. package/resources/calls.d.ts.map +1 -0
  55. package/resources/calls.js +76 -0
  56. package/resources/calls.js.map +1 -0
  57. package/resources/calls.mjs +72 -0
  58. package/resources/calls.mjs.map +1 -0
  59. package/resources/conversations.d.mts +360 -0
  60. package/resources/conversations.d.mts.map +1 -0
  61. package/resources/conversations.d.ts +360 -0
  62. package/resources/conversations.d.ts.map +1 -0
  63. package/resources/conversations.js +47 -0
  64. package/resources/conversations.js.map +1 -0
  65. package/resources/conversations.mjs +43 -0
  66. package/resources/conversations.mjs.map +1 -0
  67. package/resources/email-domains.d.mts +260 -0
  68. package/resources/email-domains.d.mts.map +1 -0
  69. package/resources/email-domains.d.ts +260 -0
  70. package/resources/email-domains.d.ts.map +1 -0
  71. package/resources/email-domains.js +77 -0
  72. package/resources/email-domains.js.map +1 -0
  73. package/resources/email-domains.mjs +73 -0
  74. package/resources/email-domains.mjs.map +1 -0
  75. package/resources/functions/functions.d.mts +122 -1
  76. package/resources/functions/functions.d.mts.map +1 -1
  77. package/resources/functions/functions.d.ts +122 -1
  78. package/resources/functions/functions.d.ts.map +1 -1
  79. package/resources/functions/functions.js +53 -0
  80. package/resources/functions/functions.js.map +1 -1
  81. package/resources/functions/functions.mjs +53 -0
  82. package/resources/functions/functions.mjs.map +1 -1
  83. package/resources/functions/git-link.d.mts +295 -0
  84. package/resources/functions/git-link.d.mts.map +1 -0
  85. package/resources/functions/git-link.d.ts +295 -0
  86. package/resources/functions/git-link.d.ts.map +1 -0
  87. package/resources/functions/git-link.js +97 -0
  88. package/resources/functions/git-link.js.map +1 -0
  89. package/resources/functions/git-link.mjs +93 -0
  90. package/resources/functions/git-link.mjs.map +1 -0
  91. package/resources/functions/index.d.mts +3 -1
  92. package/resources/functions/index.d.mts.map +1 -1
  93. package/resources/functions/index.d.ts +3 -1
  94. package/resources/functions/index.d.ts.map +1 -1
  95. package/resources/functions/index.js +5 -1
  96. package/resources/functions/index.js.map +1 -1
  97. package/resources/functions/index.mjs +2 -0
  98. package/resources/functions/index.mjs.map +1 -1
  99. package/resources/functions/triggers.d.mts +164 -0
  100. package/resources/functions/triggers.d.mts.map +1 -0
  101. package/resources/functions/triggers.d.ts +164 -0
  102. package/resources/functions/triggers.d.ts.map +1 -0
  103. package/resources/functions/triggers.js +74 -0
  104. package/resources/functions/triggers.js.map +1 -0
  105. package/resources/functions/triggers.mjs +70 -0
  106. package/resources/functions/triggers.mjs.map +1 -0
  107. package/resources/index.d.mts +10 -5
  108. package/resources/index.d.mts.map +1 -1
  109. package/resources/index.d.ts +10 -5
  110. package/resources/index.d.ts.map +1 -1
  111. package/resources/index.js +11 -1
  112. package/resources/index.js.map +1 -1
  113. package/resources/index.mjs +5 -0
  114. package/resources/index.mjs.map +1 -1
  115. package/resources/introspect.d.mts +74 -1
  116. package/resources/introspect.d.mts.map +1 -1
  117. package/resources/introspect.d.ts +74 -1
  118. package/resources/introspect.d.ts.map +1 -1
  119. package/resources/introspect.js +22 -0
  120. package/resources/introspect.js.map +1 -1
  121. package/resources/introspect.mjs +22 -0
  122. package/resources/introspect.mjs.map +1 -1
  123. package/resources/messages.d.mts +54 -1
  124. package/resources/messages.d.mts.map +1 -1
  125. package/resources/messages.d.ts +54 -1
  126. package/resources/messages.d.ts.map +1 -1
  127. package/resources/messages.js +18 -0
  128. package/resources/messages.js.map +1 -1
  129. package/resources/messages.mjs +18 -0
  130. package/resources/messages.mjs.map +1 -1
  131. package/resources/senders/agent/agent.d.mts +4 -3
  132. package/resources/senders/agent/agent.d.mts.map +1 -1
  133. package/resources/senders/agent/agent.d.ts +4 -3
  134. package/resources/senders/agent/agent.d.ts.map +1 -1
  135. package/resources/senders/agent/agent.js +2 -2
  136. package/resources/senders/agent/agent.js.map +1 -1
  137. package/resources/senders/agent/agent.mjs +2 -2
  138. package/resources/senders/agent/agent.mjs.map +1 -1
  139. package/resources/senders/agent/index.d.mts +2 -2
  140. package/resources/senders/agent/index.d.mts.map +1 -1
  141. package/resources/senders/agent/index.d.ts +2 -2
  142. package/resources/senders/agent/index.d.ts.map +1 -1
  143. package/resources/senders/agent/index.js +2 -2
  144. package/resources/senders/agent/index.js.map +1 -1
  145. package/resources/senders/agent/index.mjs +1 -1
  146. package/resources/senders/agent/index.mjs.map +1 -1
  147. package/resources/senders/agent/knowledge-bases/documents.d.mts +56 -1
  148. package/resources/senders/agent/knowledge-bases/documents.d.mts.map +1 -1
  149. package/resources/senders/agent/knowledge-bases/documents.d.ts +56 -1
  150. package/resources/senders/agent/knowledge-bases/documents.d.ts.map +1 -1
  151. package/resources/senders/agent/knowledge-bases/documents.js +33 -0
  152. package/resources/senders/agent/knowledge-bases/documents.js.map +1 -1
  153. package/resources/senders/agent/knowledge-bases/documents.mjs +33 -0
  154. package/resources/senders/agent/knowledge-bases/documents.mjs.map +1 -1
  155. package/resources/senders/agent/knowledge-bases/index.d.mts +1 -1
  156. package/resources/senders/agent/knowledge-bases/index.d.mts.map +1 -1
  157. package/resources/senders/agent/knowledge-bases/index.d.ts +1 -1
  158. package/resources/senders/agent/knowledge-bases/index.d.ts.map +1 -1
  159. package/resources/senders/agent/knowledge-bases/index.js.map +1 -1
  160. package/resources/senders/agent/knowledge-bases/index.mjs.map +1 -1
  161. package/resources/senders/agent/knowledge-bases/knowledge-bases.d.mts +2 -2
  162. package/resources/senders/agent/knowledge-bases/knowledge-bases.d.mts.map +1 -1
  163. package/resources/senders/agent/knowledge-bases/knowledge-bases.d.ts +2 -2
  164. package/resources/senders/agent/knowledge-bases/knowledge-bases.d.ts.map +1 -1
  165. package/resources/senders/agent/knowledge-bases/knowledge-bases.js.map +1 -1
  166. package/resources/senders/agent/knowledge-bases/knowledge-bases.mjs.map +1 -1
  167. package/resources/senders/agent/tools/index.d.mts +3 -0
  168. package/resources/senders/agent/tools/index.d.mts.map +1 -0
  169. package/resources/senders/agent/tools/index.d.ts +3 -0
  170. package/resources/senders/agent/tools/index.d.ts.map +1 -0
  171. package/resources/senders/agent/tools/index.js +9 -0
  172. package/resources/senders/agent/tools/index.js.map +1 -0
  173. package/resources/senders/agent/tools/index.mjs +4 -0
  174. package/resources/senders/agent/tools/index.mjs.map +1 -0
  175. package/resources/senders/agent/tools/tools.d.mts +338 -0
  176. package/resources/senders/agent/tools/tools.d.mts.map +1 -0
  177. package/resources/senders/agent/tools/tools.d.ts +338 -0
  178. package/resources/senders/agent/tools/tools.d.ts.map +1 -0
  179. package/resources/senders/agent/tools/tools.js +163 -0
  180. package/resources/senders/agent/tools/tools.js.map +1 -0
  181. package/resources/senders/agent/tools/tools.mjs +158 -0
  182. package/resources/senders/agent/tools/tools.mjs.map +1 -0
  183. package/resources/senders/agent/tools/webhook.d.mts +28 -0
  184. package/resources/senders/agent/tools/webhook.d.mts.map +1 -0
  185. package/resources/senders/agent/tools/webhook.d.ts +28 -0
  186. package/resources/senders/agent/tools/webhook.d.ts.map +1 -0
  187. package/resources/senders/agent/tools/webhook.js +28 -0
  188. package/resources/senders/agent/tools/webhook.js.map +1 -0
  189. package/resources/senders/agent/tools/webhook.mjs +24 -0
  190. package/resources/senders/agent/tools/webhook.mjs.map +1 -0
  191. package/resources/senders/agent/tools.d.mts +1 -270
  192. package/resources/senders/agent/tools.d.mts.map +1 -1
  193. package/resources/senders/agent/tools.d.ts +1 -270
  194. package/resources/senders/agent/tools.d.ts.map +1 -1
  195. package/resources/senders/agent/tools.js +2 -131
  196. package/resources/senders/agent/tools.js.map +1 -1
  197. package/resources/senders/agent/tools.mjs +1 -129
  198. package/resources/senders/agent/tools.mjs.map +1 -1
  199. package/resources/senders/index.d.mts +2 -1
  200. package/resources/senders/index.d.mts.map +1 -1
  201. package/resources/senders/index.d.ts +2 -1
  202. package/resources/senders/index.d.ts.map +1 -1
  203. package/resources/senders/index.js +3 -1
  204. package/resources/senders/index.js.map +1 -1
  205. package/resources/senders/index.mjs +1 -0
  206. package/resources/senders/index.mjs.map +1 -1
  207. package/resources/senders/senders.d.mts +4 -0
  208. package/resources/senders/senders.d.mts.map +1 -1
  209. package/resources/senders/senders.d.ts +4 -0
  210. package/resources/senders/senders.d.ts.map +1 -1
  211. package/resources/senders/senders.js +4 -0
  212. package/resources/senders/senders.js.map +1 -1
  213. package/resources/senders/senders.mjs +4 -0
  214. package/resources/senders/senders.mjs.map +1 -1
  215. package/resources/senders/telegram.d.mts +48 -0
  216. package/resources/senders/telegram.d.mts.map +1 -0
  217. package/resources/senders/telegram.d.ts +48 -0
  218. package/resources/senders/telegram.d.ts.map +1 -0
  219. package/resources/senders/telegram.js +41 -0
  220. package/resources/senders/telegram.js.map +1 -0
  221. package/resources/senders/telegram.mjs +37 -0
  222. package/resources/senders/telegram.mjs.map +1 -0
  223. package/resources/templates.d.mts +66 -1
  224. package/resources/templates.d.mts.map +1 -1
  225. package/resources/templates.d.ts +66 -1
  226. package/resources/templates.d.ts.map +1 -1
  227. package/resources/templates.js +31 -0
  228. package/resources/templates.js.map +1 -1
  229. package/resources/templates.mjs +31 -0
  230. package/resources/templates.mjs.map +1 -1
  231. package/resources/urls.d.mts +24 -1
  232. package/resources/urls.d.mts.map +1 -1
  233. package/resources/urls.d.ts +24 -1
  234. package/resources/urls.d.ts.map +1 -1
  235. package/resources/urls.js +15 -0
  236. package/resources/urls.js.map +1 -1
  237. package/resources/urls.mjs +15 -0
  238. package/resources/urls.mjs.map +1 -1
  239. package/src/client.ts +129 -0
  240. package/src/resources/agent-templates.ts +128 -0
  241. package/src/resources/agents/agents.ts +603 -0
  242. package/src/resources/agents/index.ts +21 -0
  243. package/src/resources/agents/senders.ts +79 -0
  244. package/src/resources/agents.ts +3 -0
  245. package/src/resources/calls.ts +638 -0
  246. package/src/resources/conversations.ts +472 -0
  247. package/src/resources/email-domains.ts +337 -0
  248. package/src/resources/functions/functions.ts +202 -0
  249. package/src/resources/functions/git-link.ts +398 -0
  250. package/src/resources/functions/index.ts +22 -0
  251. package/src/resources/functions/triggers.ts +227 -0
  252. package/src/resources/index.ts +57 -0
  253. package/src/resources/introspect.ts +105 -0
  254. package/src/resources/messages.ts +66 -0
  255. package/src/resources/senders/agent/agent.ts +23 -17
  256. package/src/resources/senders/agent/index.ts +4 -1
  257. package/src/resources/senders/agent/knowledge-bases/documents.ts +89 -0
  258. package/src/resources/senders/agent/knowledge-bases/index.ts +4 -0
  259. package/src/resources/senders/agent/knowledge-bases/knowledge-bases.ts +8 -0
  260. package/src/resources/senders/agent/tools/index.ts +21 -0
  261. package/src/resources/senders/agent/tools/tools.ts +460 -0
  262. package/src/resources/senders/agent/tools/webhook.ts +40 -0
  263. package/src/resources/senders/agent/tools.ts +1 -364
  264. package/src/resources/senders/index.ts +2 -0
  265. package/src/resources/senders/senders.ts +10 -0
  266. package/src/resources/senders/telegram.ts +73 -0
  267. package/src/resources/templates.ts +80 -0
  268. package/src/resources/urls.ts +35 -0
  269. package/src/version.ts +1 -1
  270. package/version.d.mts +1 -1
  271. package/version.d.ts +1 -1
  272. package/version.js +1 -1
  273. package/version.mjs +1 -1
@@ -0,0 +1,472 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../core/resource';
4
+ import * as MessagesAPI from './messages';
5
+ import { MessagesCursor } from './messages';
6
+ import { APIPromise } from '../core/api-promise';
7
+ import { Cursor, type CursorParams, PagePromise } from '../core/pagination';
8
+ import { RequestOptions } from '../internal/request-options';
9
+ import { path } from '../internal/utils/path';
10
+
11
+ export class Conversations extends APIResource {
12
+ /**
13
+ * Get conversation
14
+ */
15
+ retrieve(conversationID: string, options?: RequestOptions): APIPromise<ConversationRetrieveResponse> {
16
+ return this._client.get(path`/v1/conversations/${conversationID}`, options);
17
+ }
18
+
19
+ /**
20
+ * List inbox threads, most recently active first. A conversation groups every
21
+ * message with one contact across channels, which is what you need to build an
22
+ * inbox: `GET /v1/messages` returns a flat log with no thread to hang it on.
23
+ *
24
+ * Use `senderId` to scope the list to a single number, and `channel` to keep only
25
+ * threads that have carried that channel.
26
+ */
27
+ list(
28
+ query: ConversationListParams | null | undefined = {},
29
+ options?: RequestOptions,
30
+ ): PagePromise<ConversationListResponsesCursor, ConversationListResponse> {
31
+ return this._client.getAPIList('/v1/conversations', Cursor<ConversationListResponse>, {
32
+ query,
33
+ ...options,
34
+ });
35
+ }
36
+
37
+ /**
38
+ * Messages in this thread, newest first, across every channel it has carried.
39
+ * Reply with `POST /v1/messages`, passing the conversation's `senderId` as the
40
+ * `Zavu-Sender` header so the answer leaves from the number the contact already
41
+ * knows.
42
+ */
43
+ listMessages(
44
+ conversationID: string,
45
+ query: ConversationListMessagesParams | null | undefined = {},
46
+ options?: RequestOptions,
47
+ ): PagePromise<MessagesCursor, MessagesAPI.Message> {
48
+ return this._client.getAPIList(
49
+ path`/v1/conversations/${conversationID}/messages`,
50
+ Cursor<MessagesAPI.Message>,
51
+ { query, ...options },
52
+ );
53
+ }
54
+
55
+ /**
56
+ * Reset the thread's `unreadCount` to zero. Marks the thread read in your own
57
+ * inbox only: it does not send a read receipt to the contact.
58
+ */
59
+ markAsRead(conversationID: string, options?: RequestOptions): APIPromise<ConversationMarkAsReadResponse> {
60
+ return this._client.post(path`/v1/conversations/${conversationID}/read`, options);
61
+ }
62
+ }
63
+
64
+ export type ConversationListResponsesCursor = Cursor<ConversationListResponse>;
65
+
66
+ export interface ConversationRetrieveResponse {
67
+ /**
68
+ * An inbox thread with one contact. A conversation groups every message exchanged
69
+ * with that contact across channels, so a contact who writes on WhatsApp and later
70
+ * by email stays in one thread.
71
+ */
72
+ conversation: ConversationRetrieveResponse.Conversation;
73
+ }
74
+
75
+ export namespace ConversationRetrieveResponse {
76
+ /**
77
+ * An inbox thread with one contact. A conversation groups every message exchanged
78
+ * with that contact across channels, so a contact who writes on WhatsApp and later
79
+ * by email stays in one thread.
80
+ */
81
+ export interface Conversation {
82
+ id: string;
83
+
84
+ /**
85
+ * Every channel this thread has carried messages on.
86
+ */
87
+ channels: Array<string>;
88
+
89
+ /**
90
+ * The key this thread is filed under: a phone number in E.164, a WhatsApp
91
+ * business-scoped user ID (BSUID), a numeric chat ID
92
+ * (Telegram/Instagram/Messenger), or a group JID. It is not always a phone number,
93
+ * so do not parse it as one.
94
+ */
95
+ contactIdentifier: string;
96
+
97
+ createdAt: string;
98
+
99
+ /**
100
+ * Denormalized preview of the most recent message, so a thread list needs no extra
101
+ * fetch.
102
+ */
103
+ lastMessage: Conversation.LastMessage;
104
+
105
+ messageCount: number;
106
+
107
+ /**
108
+ * Inbound messages not yet marked read. Reset with POST
109
+ * /v1/conversations/{conversationId}/read.
110
+ */
111
+ unreadCount: number;
112
+
113
+ updatedAt: string;
114
+
115
+ /**
116
+ * ID of the contact this thread belongs to. Absent on group threads and on threads
117
+ * whose contact has not been resolved yet.
118
+ */
119
+ contactId?: string;
120
+
121
+ /**
122
+ * Email address of the thread, when the contact was reached by email.
123
+ */
124
+ email?: string;
125
+
126
+ /**
127
+ * Present when the thread is a group chat rather than a one-to-one conversation.
128
+ */
129
+ group?: Conversation.Group;
130
+
131
+ /**
132
+ * Sender that last handled this thread. Use it as the `Zavu-Sender` header when
133
+ * replying so the answer leaves from the same number the contact knows.
134
+ */
135
+ senderId?: string;
136
+
137
+ /**
138
+ * WhatsApp identity, present when the contact adopted a username.
139
+ */
140
+ whatsapp?: Conversation.Whatsapp;
141
+ }
142
+
143
+ export namespace Conversation {
144
+ /**
145
+ * Denormalized preview of the most recent message, so a thread list needs no extra
146
+ * fetch.
147
+ */
148
+ export interface LastMessage {
149
+ id: string;
150
+
151
+ at: string;
152
+
153
+ /**
154
+ * Delivery channel. Use 'auto' for intelligent routing.
155
+ */
156
+ channel: MessagesAPI.Channel;
157
+
158
+ direction: 'inbound' | 'outbound';
159
+
160
+ /**
161
+ * Text or caption. Empty when the last message carried no text (e.g. media).
162
+ */
163
+ text: string;
164
+ }
165
+
166
+ /**
167
+ * Present when the thread is a group chat rather than a one-to-one conversation.
168
+ */
169
+ export interface Group {
170
+ id: string;
171
+
172
+ participantCount?: number;
173
+
174
+ subject?: string;
175
+ }
176
+
177
+ /**
178
+ * WhatsApp identity, present when the contact adopted a username.
179
+ */
180
+ export interface Whatsapp {
181
+ /**
182
+ * Business-scoped user ID. Can be used as `to` when sending.
183
+ */
184
+ bsuid?: string;
185
+
186
+ username?: string;
187
+ }
188
+ }
189
+ }
190
+
191
+ /**
192
+ * An inbox thread with one contact. A conversation groups every message exchanged
193
+ * with that contact across channels, so a contact who writes on WhatsApp and later
194
+ * by email stays in one thread.
195
+ */
196
+ export interface ConversationListResponse {
197
+ id: string;
198
+
199
+ /**
200
+ * Every channel this thread has carried messages on.
201
+ */
202
+ channels: Array<string>;
203
+
204
+ /**
205
+ * The key this thread is filed under: a phone number in E.164, a WhatsApp
206
+ * business-scoped user ID (BSUID), a numeric chat ID
207
+ * (Telegram/Instagram/Messenger), or a group JID. It is not always a phone number,
208
+ * so do not parse it as one.
209
+ */
210
+ contactIdentifier: string;
211
+
212
+ createdAt: string;
213
+
214
+ /**
215
+ * Denormalized preview of the most recent message, so a thread list needs no extra
216
+ * fetch.
217
+ */
218
+ lastMessage: ConversationListResponse.LastMessage;
219
+
220
+ messageCount: number;
221
+
222
+ /**
223
+ * Inbound messages not yet marked read. Reset with POST
224
+ * /v1/conversations/{conversationId}/read.
225
+ */
226
+ unreadCount: number;
227
+
228
+ updatedAt: string;
229
+
230
+ /**
231
+ * ID of the contact this thread belongs to. Absent on group threads and on threads
232
+ * whose contact has not been resolved yet.
233
+ */
234
+ contactId?: string;
235
+
236
+ /**
237
+ * Email address of the thread, when the contact was reached by email.
238
+ */
239
+ email?: string;
240
+
241
+ /**
242
+ * Present when the thread is a group chat rather than a one-to-one conversation.
243
+ */
244
+ group?: ConversationListResponse.Group;
245
+
246
+ /**
247
+ * Sender that last handled this thread. Use it as the `Zavu-Sender` header when
248
+ * replying so the answer leaves from the same number the contact knows.
249
+ */
250
+ senderId?: string;
251
+
252
+ /**
253
+ * WhatsApp identity, present when the contact adopted a username.
254
+ */
255
+ whatsapp?: ConversationListResponse.Whatsapp;
256
+ }
257
+
258
+ export namespace ConversationListResponse {
259
+ /**
260
+ * Denormalized preview of the most recent message, so a thread list needs no extra
261
+ * fetch.
262
+ */
263
+ export interface LastMessage {
264
+ id: string;
265
+
266
+ at: string;
267
+
268
+ /**
269
+ * Delivery channel. Use 'auto' for intelligent routing.
270
+ */
271
+ channel: MessagesAPI.Channel;
272
+
273
+ direction: 'inbound' | 'outbound';
274
+
275
+ /**
276
+ * Text or caption. Empty when the last message carried no text (e.g. media).
277
+ */
278
+ text: string;
279
+ }
280
+
281
+ /**
282
+ * Present when the thread is a group chat rather than a one-to-one conversation.
283
+ */
284
+ export interface Group {
285
+ id: string;
286
+
287
+ participantCount?: number;
288
+
289
+ subject?: string;
290
+ }
291
+
292
+ /**
293
+ * WhatsApp identity, present when the contact adopted a username.
294
+ */
295
+ export interface Whatsapp {
296
+ /**
297
+ * Business-scoped user ID. Can be used as `to` when sending.
298
+ */
299
+ bsuid?: string;
300
+
301
+ username?: string;
302
+ }
303
+ }
304
+
305
+ export interface ConversationMarkAsReadResponse {
306
+ /**
307
+ * An inbox thread with one contact. A conversation groups every message exchanged
308
+ * with that contact across channels, so a contact who writes on WhatsApp and later
309
+ * by email stays in one thread.
310
+ */
311
+ conversation: ConversationMarkAsReadResponse.Conversation;
312
+ }
313
+
314
+ export namespace ConversationMarkAsReadResponse {
315
+ /**
316
+ * An inbox thread with one contact. A conversation groups every message exchanged
317
+ * with that contact across channels, so a contact who writes on WhatsApp and later
318
+ * by email stays in one thread.
319
+ */
320
+ export interface Conversation {
321
+ id: string;
322
+
323
+ /**
324
+ * Every channel this thread has carried messages on.
325
+ */
326
+ channels: Array<string>;
327
+
328
+ /**
329
+ * The key this thread is filed under: a phone number in E.164, a WhatsApp
330
+ * business-scoped user ID (BSUID), a numeric chat ID
331
+ * (Telegram/Instagram/Messenger), or a group JID. It is not always a phone number,
332
+ * so do not parse it as one.
333
+ */
334
+ contactIdentifier: string;
335
+
336
+ createdAt: string;
337
+
338
+ /**
339
+ * Denormalized preview of the most recent message, so a thread list needs no extra
340
+ * fetch.
341
+ */
342
+ lastMessage: Conversation.LastMessage;
343
+
344
+ messageCount: number;
345
+
346
+ /**
347
+ * Inbound messages not yet marked read. Reset with POST
348
+ * /v1/conversations/{conversationId}/read.
349
+ */
350
+ unreadCount: number;
351
+
352
+ updatedAt: string;
353
+
354
+ /**
355
+ * ID of the contact this thread belongs to. Absent on group threads and on threads
356
+ * whose contact has not been resolved yet.
357
+ */
358
+ contactId?: string;
359
+
360
+ /**
361
+ * Email address of the thread, when the contact was reached by email.
362
+ */
363
+ email?: string;
364
+
365
+ /**
366
+ * Present when the thread is a group chat rather than a one-to-one conversation.
367
+ */
368
+ group?: Conversation.Group;
369
+
370
+ /**
371
+ * Sender that last handled this thread. Use it as the `Zavu-Sender` header when
372
+ * replying so the answer leaves from the same number the contact knows.
373
+ */
374
+ senderId?: string;
375
+
376
+ /**
377
+ * WhatsApp identity, present when the contact adopted a username.
378
+ */
379
+ whatsapp?: Conversation.Whatsapp;
380
+ }
381
+
382
+ export namespace Conversation {
383
+ /**
384
+ * Denormalized preview of the most recent message, so a thread list needs no extra
385
+ * fetch.
386
+ */
387
+ export interface LastMessage {
388
+ id: string;
389
+
390
+ at: string;
391
+
392
+ /**
393
+ * Delivery channel. Use 'auto' for intelligent routing.
394
+ */
395
+ channel: MessagesAPI.Channel;
396
+
397
+ direction: 'inbound' | 'outbound';
398
+
399
+ /**
400
+ * Text or caption. Empty when the last message carried no text (e.g. media).
401
+ */
402
+ text: string;
403
+ }
404
+
405
+ /**
406
+ * Present when the thread is a group chat rather than a one-to-one conversation.
407
+ */
408
+ export interface Group {
409
+ id: string;
410
+
411
+ participantCount?: number;
412
+
413
+ subject?: string;
414
+ }
415
+
416
+ /**
417
+ * WhatsApp identity, present when the contact adopted a username.
418
+ */
419
+ export interface Whatsapp {
420
+ /**
421
+ * Business-scoped user ID. Can be used as `to` when sending.
422
+ */
423
+ bsuid?: string;
424
+
425
+ username?: string;
426
+ }
427
+ }
428
+ }
429
+
430
+ export interface ConversationListParams extends CursorParams {
431
+ /**
432
+ * Keep only threads that have carried this channel.
433
+ */
434
+ channel?: 'sms' | 'sms_oneway' | 'whatsapp' | 'email' | 'telegram' | 'instagram' | 'messenger' | 'voice';
435
+
436
+ /**
437
+ * Search threads by identity: phone number (any format — `+1 (555) 123-4567` and
438
+ * `15551234567` both match), email address (full or local part), WhatsApp group
439
+ * subject, WhatsApp username, or BSUID. Matching is by whole word, with prefix
440
+ * matching on the last term, so `mar` finds `maria@example.com` and `+1555` finds
441
+ * `+15551234567`; a fragment from the middle or end of a number (`4567`) does not
442
+ * match.
443
+ *
444
+ * It does **not** search message bodies — only who the thread is with.
445
+ *
446
+ * Results come back ranked by relevance rather than by recency, so the usual "most
447
+ * recently active first" ordering does not apply while `q` is set. `senderId` and
448
+ * `channel` still narrow the results, and `cursor` paginates them as usual. An
449
+ * empty or whitespace-only `q` returns no items rather than the full list.
450
+ */
451
+ search?: string;
452
+
453
+ /**
454
+ * Keep only threads last handled by this sender.
455
+ */
456
+ senderId?: string;
457
+ }
458
+
459
+ export interface ConversationListMessagesParams extends CursorParams {}
460
+
461
+ export declare namespace Conversations {
462
+ export {
463
+ type ConversationRetrieveResponse as ConversationRetrieveResponse,
464
+ type ConversationListResponse as ConversationListResponse,
465
+ type ConversationMarkAsReadResponse as ConversationMarkAsReadResponse,
466
+ type ConversationListResponsesCursor as ConversationListResponsesCursor,
467
+ type ConversationListParams as ConversationListParams,
468
+ type ConversationListMessagesParams as ConversationListMessagesParams,
469
+ };
470
+ }
471
+
472
+ export { type MessagesCursor };