zavudev 0.20.0 → 0.21.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 (344) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +1 -1
  4. data/lib/zavudev/client.rb +20 -0
  5. data/lib/zavudev/models/agent_create_params.rb +278 -0
  6. data/lib/zavudev/models/agent_create_response.rb +17 -0
  7. data/lib/zavudev/models/{contact_dismiss_merge_suggestion_params.rb → agent_delete_params.rb} +6 -6
  8. data/lib/zavudev/models/agent_list_params.rb +26 -0
  9. data/lib/zavudev/models/agent_list_voices_params.rb +22 -0
  10. data/lib/zavudev/models/agent_list_voices_response.rb +57 -0
  11. data/lib/zavudev/models/agent_retrieve_params.rb +20 -0
  12. data/lib/zavudev/models/agent_retrieve_response.rb +17 -0
  13. data/lib/zavudev/models/agent_template_list_params.rb +14 -0
  14. data/lib/zavudev/models/agent_template_list_response.rb +77 -0
  15. data/lib/zavudev/models/agent_template_retrieve_params.rb +20 -0
  16. data/lib/zavudev/models/agent_template_retrieve_response.rb +144 -0
  17. data/lib/zavudev/models/agent_test_params.rb +91 -0
  18. data/lib/zavudev/models/agent_test_response.rb +117 -0
  19. data/lib/zavudev/models/agent_update_params.rb +295 -0
  20. data/lib/zavudev/models/agent_update_response.rb +17 -0
  21. data/lib/zavudev/models/agents/sender_connect_params.rb +31 -0
  22. data/lib/zavudev/models/agents/sender_connect_response.rb +19 -0
  23. data/lib/zavudev/models/agents/sender_disconnect_params.rb +28 -0
  24. data/lib/zavudev/models/call_create_params.rb +72 -0
  25. data/lib/zavudev/models/call_create_response.rb +262 -0
  26. data/lib/zavudev/models/call_hangup_params.rb +20 -0
  27. data/lib/zavudev/models/call_hangup_response.rb +262 -0
  28. data/lib/zavudev/models/call_list_params.rb +95 -0
  29. data/lib/zavudev/models/call_list_response.rb +251 -0
  30. data/lib/zavudev/models/call_retrieve_params.rb +20 -0
  31. data/lib/zavudev/models/call_retrieve_response.rb +262 -0
  32. data/lib/zavudev/models/contact.rb +1 -9
  33. data/lib/zavudev/models/contact_list_params.rb +42 -3
  34. data/lib/zavudev/models/contact_update_params.rb +14 -1
  35. data/lib/zavudev/models/conversation_list_messages_params.rb +36 -0
  36. data/lib/zavudev/models/conversation_list_params.rb +85 -0
  37. data/lib/zavudev/models/conversation_list_response.rb +226 -0
  38. data/lib/zavudev/models/conversation_mark_as_read_params.rb +20 -0
  39. data/lib/zavudev/models/conversation_mark_as_read_response.rb +245 -0
  40. data/lib/zavudev/models/conversation_retrieve_params.rb +20 -0
  41. data/lib/zavudev/models/conversation_retrieve_response.rb +244 -0
  42. data/lib/zavudev/models/email_domain_create_params.rb +22 -0
  43. data/lib/zavudev/models/email_domain_create_response.rb +134 -0
  44. data/lib/zavudev/models/email_domain_delete_params.rb +20 -0
  45. data/lib/zavudev/models/email_domain_list_params.rb +14 -0
  46. data/lib/zavudev/models/email_domain_list_response.rb +132 -0
  47. data/lib/zavudev/models/email_domain_retrieve_params.rb +20 -0
  48. data/lib/zavudev/models/email_domain_retrieve_response.rb +134 -0
  49. data/lib/zavudev/models/email_domain_verify_params.rb +20 -0
  50. data/lib/zavudev/models/email_domain_verify_response.rb +134 -0
  51. data/lib/zavudev/models/function_list_deployments_params.rb +26 -0
  52. data/lib/zavudev/models/function_list_deployments_response.rb +95 -0
  53. data/lib/zavudev/models/function_list_event_types_params.rb +14 -0
  54. data/lib/zavudev/models/function_list_event_types_response.rb +16 -0
  55. data/lib/zavudev/models/function_rollback_deployment_params.rb +29 -0
  56. data/lib/zavudev/models/function_rollback_deployment_response.rb +137 -0
  57. data/lib/zavudev/models/functions/git_link_deploy_now_params.rb +22 -0
  58. data/lib/zavudev/models/functions/git_link_deploy_now_response.rb +18 -0
  59. data/lib/zavudev/models/functions/git_link_link_params.rb +59 -0
  60. data/lib/zavudev/models/functions/git_link_link_response.rb +222 -0
  61. data/lib/zavudev/models/functions/git_link_retrieve_params.rb +22 -0
  62. data/lib/zavudev/models/functions/git_link_retrieve_response.rb +222 -0
  63. data/lib/zavudev/models/functions/git_link_unlink_params.rb +22 -0
  64. data/lib/zavudev/models/functions/git_link_update_params.rb +40 -0
  65. data/lib/zavudev/models/functions/git_link_update_response.rb +222 -0
  66. data/lib/zavudev/models/functions/trigger_create_params.rb +51 -0
  67. data/lib/zavudev/models/functions/trigger_create_response.rb +120 -0
  68. data/lib/zavudev/models/functions/trigger_delete_params.rb +22 -0
  69. data/lib/zavudev/models/functions/trigger_list_params.rb +22 -0
  70. data/lib/zavudev/models/functions/trigger_list_response.rb +105 -0
  71. data/lib/zavudev/models/functions/trigger_update_params.rb +28 -0
  72. data/lib/zavudev/models/functions/trigger_update_response.rb +24 -0
  73. data/lib/zavudev/models/introspect_validate_email_params.rb +30 -0
  74. data/lib/zavudev/models/introspect_validate_email_response.rb +145 -0
  75. data/lib/zavudev/models/message.rb +24 -1
  76. data/lib/zavudev/models/message_content.rb +148 -1
  77. data/lib/zavudev/models/message_list_attachments_params.rb +20 -0
  78. data/lib/zavudev/models/message_list_attachments_response.rb +90 -0
  79. data/lib/zavudev/models/phone_number_type.rb +4 -0
  80. data/lib/zavudev/models/senders/agent/knowledge_bases/document_retrieve_document_params.rb +38 -0
  81. data/lib/zavudev/models/senders/agent/knowledge_bases/document_retrieve_document_response.rb +22 -0
  82. data/lib/zavudev/models/senders/agent/knowledge_bases/document_update_document_params.rb +50 -0
  83. data/lib/zavudev/models/senders/agent/knowledge_bases/document_update_document_response.rb +22 -0
  84. data/lib/zavudev/models/senders/agent/tool_list_test_runs_params.rb +36 -0
  85. data/lib/zavudev/models/senders/agent/tool_list_test_runs_response.rb +101 -0
  86. data/lib/zavudev/models/senders/agent/tools/webhook_rotate_secret_params.rb +32 -0
  87. data/lib/zavudev/models/senders/telegram_connect_params.rb +31 -0
  88. data/lib/zavudev/models/senders/telegram_connect_response.rb +41 -0
  89. data/lib/zavudev/models/senders/telegram_disconnect_params.rb +22 -0
  90. data/lib/zavudev/models/template_sync_params.rb +26 -0
  91. data/lib/zavudev/models/template_sync_response.rb +63 -0
  92. data/lib/zavudev/models/url_escalate_params.rb +29 -0
  93. data/lib/zavudev/models/url_escalate_response.rb +22 -0
  94. data/lib/zavudev/models/webhook_event.rb +6 -1
  95. data/lib/zavudev/models.rb +60 -2
  96. data/lib/zavudev/resources/agent_templates.rb +56 -0
  97. data/lib/zavudev/resources/agents/senders.rb +70 -0
  98. data/lib/zavudev/resources/agents.rb +253 -0
  99. data/lib/zavudev/resources/broadcasts.rb +16 -6
  100. data/lib/zavudev/resources/calls.rb +147 -0
  101. data/lib/zavudev/resources/contacts.rb +19 -23
  102. data/lib/zavudev/resources/conversations.rb +124 -0
  103. data/lib/zavudev/resources/email_domains.rb +113 -0
  104. data/lib/zavudev/resources/functions/git_link.rb +151 -0
  105. data/lib/zavudev/resources/functions/triggers.rb +116 -0
  106. data/lib/zavudev/resources/functions.rb +82 -0
  107. data/lib/zavudev/resources/introspect.rb +33 -0
  108. data/lib/zavudev/resources/messages.rb +54 -0
  109. data/lib/zavudev/resources/number_10dlc/brands.rb +10 -5
  110. data/lib/zavudev/resources/number_10dlc/campaigns.rb +8 -7
  111. data/lib/zavudev/resources/senders/agent/knowledge_bases/documents.rb +71 -0
  112. data/lib/zavudev/resources/senders/agent/tools/webhook.rb +47 -0
  113. data/lib/zavudev/resources/senders/agent/tools.rb +37 -0
  114. data/lib/zavudev/resources/senders/telegram.rb +61 -0
  115. data/lib/zavudev/resources/senders.rb +4 -0
  116. data/lib/zavudev/resources/templates.rb +45 -0
  117. data/lib/zavudev/resources/urls.rb +25 -0
  118. data/lib/zavudev/version.rb +1 -1
  119. data/lib/zavudev.rb +93 -1
  120. data/rbi/zavudev/client.rbi +15 -0
  121. data/rbi/zavudev/models/agent_create_params.rbi +417 -0
  122. data/rbi/zavudev/models/agent_create_response.rbi +37 -0
  123. data/rbi/zavudev/models/agent_delete_params.rbi +35 -0
  124. data/rbi/zavudev/models/agent_list_params.rbi +49 -0
  125. data/rbi/zavudev/models/agent_list_voices_params.rbi +43 -0
  126. data/rbi/zavudev/models/agent_list_voices_response.rbi +95 -0
  127. data/rbi/zavudev/models/agent_retrieve_params.rbi +35 -0
  128. data/rbi/zavudev/models/agent_retrieve_response.rbi +37 -0
  129. data/rbi/zavudev/models/agent_template_list_params.rbi +27 -0
  130. data/rbi/zavudev/models/agent_template_list_response.rbi +153 -0
  131. data/rbi/zavudev/models/agent_template_retrieve_params.rbi +38 -0
  132. data/rbi/zavudev/models/agent_template_retrieve_response.rbi +266 -0
  133. data/rbi/zavudev/models/agent_test_params.rbi +161 -0
  134. data/rbi/zavudev/models/agent_test_response.rbi +176 -0
  135. data/rbi/zavudev/models/agent_update_params.rbi +441 -0
  136. data/rbi/zavudev/models/agent_update_response.rbi +37 -0
  137. data/rbi/zavudev/models/agents/sender_connect_params.rbi +54 -0
  138. data/rbi/zavudev/models/agents/sender_connect_response.rbi +39 -0
  139. data/rbi/zavudev/models/agents/sender_disconnect_params.rbi +48 -0
  140. data/rbi/zavudev/models/call_create_params.rbi +112 -0
  141. data/rbi/zavudev/models/call_create_response.rbi +466 -0
  142. data/rbi/zavudev/models/call_hangup_params.rbi +35 -0
  143. data/rbi/zavudev/models/call_hangup_response.rbi +466 -0
  144. data/rbi/zavudev/models/call_list_params.rbi +159 -0
  145. data/rbi/zavudev/models/call_list_response.rbi +405 -0
  146. data/rbi/zavudev/models/call_retrieve_params.rbi +35 -0
  147. data/rbi/zavudev/models/call_retrieve_response.rbi +472 -0
  148. data/rbi/zavudev/models/contact.rbi +0 -11
  149. data/rbi/zavudev/models/contact_list_params.rbi +56 -0
  150. data/rbi/zavudev/models/contact_update_params.rbi +12 -0
  151. data/rbi/zavudev/models/conversation_list_messages_params.rbi +64 -0
  152. data/rbi/zavudev/models/conversation_list_params.rbi +167 -0
  153. data/rbi/zavudev/models/conversation_list_response.rbi +367 -0
  154. data/rbi/zavudev/models/conversation_mark_as_read_params.rbi +38 -0
  155. data/rbi/zavudev/models/conversation_mark_as_read_response.rbi +436 -0
  156. data/rbi/zavudev/models/conversation_retrieve_params.rbi +35 -0
  157. data/rbi/zavudev/models/conversation_retrieve_response.rbi +436 -0
  158. data/rbi/zavudev/models/email_domain_create_params.rbi +40 -0
  159. data/rbi/zavudev/models/email_domain_create_response.rbi +259 -0
  160. data/rbi/zavudev/models/email_domain_delete_params.rbi +35 -0
  161. data/rbi/zavudev/models/email_domain_list_params.rbi +27 -0
  162. data/rbi/zavudev/models/email_domain_list_response.rbi +253 -0
  163. data/rbi/zavudev/models/email_domain_retrieve_params.rbi +35 -0
  164. data/rbi/zavudev/models/email_domain_retrieve_response.rbi +259 -0
  165. data/rbi/zavudev/models/email_domain_verify_params.rbi +35 -0
  166. data/rbi/zavudev/models/email_domain_verify_response.rbi +259 -0
  167. data/rbi/zavudev/models/function_list_deployments_params.rbi +49 -0
  168. data/rbi/zavudev/models/function_list_deployments_response.rbi +211 -0
  169. data/rbi/zavudev/models/function_list_event_types_params.rbi +30 -0
  170. data/rbi/zavudev/models/function_list_event_types_response.rbi +26 -0
  171. data/rbi/zavudev/models/function_rollback_deployment_params.rbi +52 -0
  172. data/rbi/zavudev/models/function_rollback_deployment_response.rbi +240 -0
  173. data/rbi/zavudev/models/functions/git_link_deploy_now_params.rbi +40 -0
  174. data/rbi/zavudev/models/functions/git_link_deploy_now_response.rbi +28 -0
  175. data/rbi/zavudev/models/functions/git_link_link_params.rbi +87 -0
  176. data/rbi/zavudev/models/functions/git_link_link_response.rbi +360 -0
  177. data/rbi/zavudev/models/functions/git_link_retrieve_params.rbi +40 -0
  178. data/rbi/zavudev/models/functions/git_link_retrieve_response.rbi +364 -0
  179. data/rbi/zavudev/models/functions/git_link_unlink_params.rbi +40 -0
  180. data/rbi/zavudev/models/functions/git_link_update_params.rbi +70 -0
  181. data/rbi/zavudev/models/functions/git_link_update_response.rbi +362 -0
  182. data/rbi/zavudev/models/functions/trigger_create_params.rbi +75 -0
  183. data/rbi/zavudev/models/functions/trigger_create_response.rbi +168 -0
  184. data/rbi/zavudev/models/functions/trigger_delete_params.rbi +40 -0
  185. data/rbi/zavudev/models/functions/trigger_list_params.rbi +40 -0
  186. data/rbi/zavudev/models/functions/trigger_list_response.rbi +152 -0
  187. data/rbi/zavudev/models/functions/trigger_update_params.rbi +48 -0
  188. data/rbi/zavudev/models/functions/trigger_update_response.rbi +33 -0
  189. data/rbi/zavudev/models/introspect_validate_email_params.rbi +60 -0
  190. data/rbi/zavudev/models/introspect_validate_email_response.rbi +328 -0
  191. data/rbi/zavudev/models/message.rbi +29 -0
  192. data/rbi/zavudev/models/message_content.rbi +260 -0
  193. data/rbi/zavudev/models/{contact_dismiss_merge_suggestion_params.rbi → message_list_attachments_params.rbi} +6 -6
  194. data/rbi/zavudev/models/message_list_attachments_response.rbi +136 -0
  195. data/rbi/zavudev/models/phone_number_type.rbi +4 -0
  196. data/rbi/zavudev/models/senders/agent/knowledge_bases/document_retrieve_document_params.rbi +57 -0
  197. data/rbi/zavudev/models/senders/agent/knowledge_bases/document_retrieve_document_response.rbi +47 -0
  198. data/rbi/zavudev/models/senders/agent/knowledge_bases/document_update_document_params.rbi +80 -0
  199. data/rbi/zavudev/models/senders/agent/knowledge_bases/document_update_document_response.rbi +47 -0
  200. data/rbi/zavudev/models/senders/agent/tool_list_test_runs_params.rbi +58 -0
  201. data/rbi/zavudev/models/senders/agent/tool_list_test_runs_response.rbi +152 -0
  202. data/rbi/zavudev/models/senders/agent/tools/webhook_rotate_secret_params.rbi +52 -0
  203. data/rbi/zavudev/models/senders/telegram_connect_params.rbi +54 -0
  204. data/rbi/zavudev/models/senders/telegram_connect_response.rbi +93 -0
  205. data/rbi/zavudev/models/senders/telegram_disconnect_params.rbi +40 -0
  206. data/rbi/zavudev/models/template_sync_params.rbi +45 -0
  207. data/rbi/zavudev/models/template_sync_response.rbi +86 -0
  208. data/rbi/zavudev/models/url_escalate_params.rbi +49 -0
  209. data/rbi/zavudev/models/url_escalate_response.rbi +36 -0
  210. data/rbi/zavudev/models/webhook_event.rbi +6 -1
  211. data/rbi/zavudev/models.rbi +62 -3
  212. data/rbi/zavudev/resources/agent_templates.rbi +36 -0
  213. data/rbi/zavudev/resources/agents/senders.rbi +50 -0
  214. data/rbi/zavudev/resources/agents.rbi +204 -0
  215. data/rbi/zavudev/resources/broadcasts.rbi +16 -6
  216. data/rbi/zavudev/resources/calls.rbi +132 -0
  217. data/rbi/zavudev/resources/contacts.rbi +34 -11
  218. data/rbi/zavudev/resources/conversations.rbi +98 -0
  219. data/rbi/zavudev/resources/email_domains.rbi +67 -0
  220. data/rbi/zavudev/resources/functions/git_link.rbi +116 -0
  221. data/rbi/zavudev/resources/functions/triggers.rbi +81 -0
  222. data/rbi/zavudev/resources/functions.rbi +55 -0
  223. data/rbi/zavudev/resources/introspect.rbi +26 -0
  224. data/rbi/zavudev/resources/messages.rbi +45 -0
  225. data/rbi/zavudev/resources/number_10dlc/brands.rbi +10 -5
  226. data/rbi/zavudev/resources/number_10dlc/campaigns.rbi +8 -7
  227. data/rbi/zavudev/resources/senders/agent/knowledge_bases/documents.rbi +48 -0
  228. data/rbi/zavudev/resources/senders/agent/tools/webhook.rbi +31 -0
  229. data/rbi/zavudev/resources/senders/agent/tools.rbi +25 -0
  230. data/rbi/zavudev/resources/senders/telegram.rbi +42 -0
  231. data/rbi/zavudev/resources/senders.rbi +3 -0
  232. data/rbi/zavudev/resources/templates.rbi +35 -0
  233. data/rbi/zavudev/resources/urls.rbi +17 -0
  234. data/sig/zavudev/client.rbs +10 -0
  235. data/sig/zavudev/models/agent_create_params.rbs +234 -0
  236. data/sig/zavudev/models/agent_create_response.rbs +13 -0
  237. data/sig/zavudev/models/agent_delete_params.rbs +23 -0
  238. data/sig/zavudev/models/agent_list_params.rbs +32 -0
  239. data/sig/zavudev/models/agent_list_voices_params.rbs +25 -0
  240. data/sig/zavudev/models/agent_list_voices_response.rbs +46 -0
  241. data/sig/zavudev/models/agent_retrieve_params.rbs +23 -0
  242. data/sig/zavudev/models/agent_retrieve_response.rbs +13 -0
  243. data/sig/zavudev/models/agent_template_list_params.rbs +15 -0
  244. data/sig/zavudev/models/agent_template_list_response.rbs +73 -0
  245. data/sig/zavudev/models/agent_template_retrieve_params.rbs +23 -0
  246. data/sig/zavudev/models/agent_template_retrieve_response.rbs +112 -0
  247. data/sig/zavudev/models/agent_test_params.rbs +87 -0
  248. data/sig/zavudev/models/agent_test_response.rbs +78 -0
  249. data/sig/zavudev/models/agent_update_params.rbs +259 -0
  250. data/sig/zavudev/models/agent_update_response.rbs +13 -0
  251. data/sig/zavudev/models/agents/sender_connect_params.rbs +30 -0
  252. data/sig/zavudev/models/agents/sender_connect_response.rbs +15 -0
  253. data/sig/zavudev/models/agents/sender_disconnect_params.rbs +30 -0
  254. data/sig/zavudev/models/call_create_params.rbs +61 -0
  255. data/sig/zavudev/models/call_create_response.rbs +194 -0
  256. data/sig/zavudev/models/call_hangup_params.rbs +23 -0
  257. data/sig/zavudev/models/call_hangup_response.rbs +194 -0
  258. data/sig/zavudev/models/call_list_params.rbs +89 -0
  259. data/sig/zavudev/models/call_list_response.rbs +183 -0
  260. data/sig/zavudev/models/call_retrieve_params.rbs +23 -0
  261. data/sig/zavudev/models/call_retrieve_response.rbs +196 -0
  262. data/sig/zavudev/models/contact.rbs +0 -7
  263. data/sig/zavudev/models/contact_list_params.rbs +19 -1
  264. data/sig/zavudev/models/contact_update_params.rbs +5 -0
  265. data/sig/zavudev/models/conversation_list_messages_params.rbs +36 -0
  266. data/sig/zavudev/models/conversation_list_params.rbs +83 -0
  267. data/sig/zavudev/models/conversation_list_response.rbs +184 -0
  268. data/sig/zavudev/models/conversation_mark_as_read_params.rbs +23 -0
  269. data/sig/zavudev/models/conversation_mark_as_read_response.rbs +201 -0
  270. data/sig/zavudev/models/conversation_retrieve_params.rbs +23 -0
  271. data/sig/zavudev/models/conversation_retrieve_response.rbs +201 -0
  272. data/sig/zavudev/models/email_domain_create_params.rbs +23 -0
  273. data/sig/zavudev/models/email_domain_create_response.rbs +116 -0
  274. data/sig/zavudev/models/email_domain_delete_params.rbs +23 -0
  275. data/sig/zavudev/models/email_domain_list_params.rbs +15 -0
  276. data/sig/zavudev/models/email_domain_list_response.rbs +116 -0
  277. data/sig/zavudev/models/email_domain_retrieve_params.rbs +23 -0
  278. data/sig/zavudev/models/email_domain_retrieve_response.rbs +116 -0
  279. data/sig/zavudev/models/email_domain_verify_params.rbs +23 -0
  280. data/sig/zavudev/models/email_domain_verify_response.rbs +116 -0
  281. data/sig/zavudev/models/function_list_deployments_params.rbs +30 -0
  282. data/sig/zavudev/models/function_list_deployments_response.rbs +107 -0
  283. data/sig/zavudev/models/function_list_event_types_params.rbs +15 -0
  284. data/sig/zavudev/models/function_list_event_types_response.rbs +13 -0
  285. data/sig/zavudev/models/function_rollback_deployment_params.rbs +28 -0
  286. data/sig/zavudev/models/function_rollback_deployment_response.rbs +117 -0
  287. data/sig/zavudev/models/functions/git_link_deploy_now_params.rbs +25 -0
  288. data/sig/zavudev/models/functions/git_link_deploy_now_response.rbs +15 -0
  289. data/sig/zavudev/models/functions/git_link_link_params.rbs +59 -0
  290. data/sig/zavudev/models/functions/git_link_link_response.rbs +159 -0
  291. data/sig/zavudev/models/functions/git_link_retrieve_params.rbs +25 -0
  292. data/sig/zavudev/models/functions/git_link_retrieve_response.rbs +159 -0
  293. data/sig/zavudev/models/functions/git_link_unlink_params.rbs +25 -0
  294. data/sig/zavudev/models/functions/git_link_update_params.rbs +47 -0
  295. data/sig/zavudev/models/functions/git_link_update_response.rbs +159 -0
  296. data/sig/zavudev/models/functions/trigger_create_params.rbs +45 -0
  297. data/sig/zavudev/models/functions/trigger_create_response.rbs +94 -0
  298. data/sig/zavudev/models/functions/trigger_delete_params.rbs +25 -0
  299. data/sig/zavudev/models/functions/trigger_list_params.rbs +25 -0
  300. data/sig/zavudev/models/functions/trigger_list_response.rbs +84 -0
  301. data/sig/zavudev/models/functions/trigger_update_params.rbs +30 -0
  302. data/sig/zavudev/models/functions/trigger_update_response.rbs +17 -0
  303. data/sig/zavudev/models/introspect_validate_email_params.rbs +32 -0
  304. data/sig/zavudev/models/introspect_validate_email_response.rbs +135 -0
  305. data/sig/zavudev/models/message.rbs +16 -0
  306. data/sig/zavudev/models/message_content.rbs +117 -0
  307. data/sig/zavudev/models/{contact_dismiss_merge_suggestion_params.rbs → message_list_attachments_params.rbs} +6 -6
  308. data/sig/zavudev/models/message_list_attachments_response.rbs +70 -0
  309. data/sig/zavudev/models/phone_number_type.rbs +2 -1
  310. data/sig/zavudev/models/senders/agent/knowledge_bases/document_retrieve_document_params.rbs +38 -0
  311. data/sig/zavudev/models/senders/agent/knowledge_bases/document_retrieve_document_response.rbs +22 -0
  312. data/sig/zavudev/models/senders/agent/knowledge_bases/document_update_document_params.rbs +56 -0
  313. data/sig/zavudev/models/senders/agent/knowledge_bases/document_update_document_response.rbs +22 -0
  314. data/sig/zavudev/models/senders/agent/tool_list_test_runs_params.rbs +38 -0
  315. data/sig/zavudev/models/senders/agent/tool_list_test_runs_response.rbs +83 -0
  316. data/sig/zavudev/models/senders/agent/tools/webhook_rotate_secret_params.rbs +34 -0
  317. data/sig/zavudev/models/senders/telegram_connect_params.rbs +30 -0
  318. data/sig/zavudev/models/senders/telegram_connect_response.rbs +49 -0
  319. data/sig/zavudev/models/senders/telegram_disconnect_params.rbs +25 -0
  320. data/sig/zavudev/models/template_sync_params.rbs +25 -0
  321. data/sig/zavudev/models/template_sync_response.rbs +45 -0
  322. data/sig/zavudev/models/url_escalate_params.rbs +28 -0
  323. data/sig/zavudev/models/url_escalate_response.rbs +15 -0
  324. data/sig/zavudev/models.rbs +60 -2
  325. data/sig/zavudev/resources/agent_templates.rbs +16 -0
  326. data/sig/zavudev/resources/agents/senders.rbs +21 -0
  327. data/sig/zavudev/resources/agents.rbs +72 -0
  328. data/sig/zavudev/resources/calls.rbs +35 -0
  329. data/sig/zavudev/resources/contacts.rbs +3 -5
  330. data/sig/zavudev/resources/conversations.rbs +33 -0
  331. data/sig/zavudev/resources/email_domains.rbs +31 -0
  332. data/sig/zavudev/resources/functions/git_link.rbs +42 -0
  333. data/sig/zavudev/resources/functions/triggers.rbs +33 -0
  334. data/sig/zavudev/resources/functions.rbs +20 -0
  335. data/sig/zavudev/resources/introspect.rbs +6 -0
  336. data/sig/zavudev/resources/messages.rbs +5 -0
  337. data/sig/zavudev/resources/senders/agent/knowledge_bases/documents.rbs +16 -0
  338. data/sig/zavudev/resources/senders/agent/tools/webhook.rbs +19 -0
  339. data/sig/zavudev/resources/senders/agent/tools.rbs +9 -0
  340. data/sig/zavudev/resources/senders/telegram.rbs +20 -0
  341. data/sig/zavudev/resources/senders.rbs +2 -0
  342. data/sig/zavudev/resources/templates.rbs +5 -0
  343. data/sig/zavudev/resources/urls.rbs +6 -0
  344. metadata +281 -5
@@ -0,0 +1,152 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ module Functions
6
+ class TriggerListResponse < Zavudev::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ Zavudev::Models::Functions::TriggerListResponse,
11
+ Zavudev::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ sig do
16
+ returns(
17
+ T::Array[Zavudev::Models::Functions::TriggerListResponse::Trigger]
18
+ )
19
+ end
20
+ attr_accessor :triggers
21
+
22
+ sig do
23
+ params(
24
+ triggers:
25
+ T::Array[
26
+ Zavudev::Models::Functions::TriggerListResponse::Trigger::OrHash
27
+ ]
28
+ ).returns(T.attached_class)
29
+ end
30
+ def self.new(triggers:)
31
+ end
32
+
33
+ sig do
34
+ override.returns(
35
+ {
36
+ triggers:
37
+ T::Array[
38
+ Zavudev::Models::Functions::TriggerListResponse::Trigger
39
+ ]
40
+ }
41
+ )
42
+ end
43
+ def to_hash
44
+ end
45
+
46
+ class Trigger < Zavudev::Internal::Type::BaseModel
47
+ OrHash =
48
+ T.type_alias do
49
+ T.any(
50
+ Zavudev::Models::Functions::TriggerListResponse::Trigger,
51
+ Zavudev::Internal::AnyHash
52
+ )
53
+ end
54
+
55
+ sig { returns(String) }
56
+ attr_accessor :id
57
+
58
+ sig { returns(T::Boolean) }
59
+ attr_accessor :active
60
+
61
+ sig { returns(Time) }
62
+ attr_accessor :created_at
63
+
64
+ # Event type that fires the function. See GET /v1/functions/event-types for the
65
+ # supported list. The special type `cron` fires on a schedule instead of a
66
+ # messaging event and carries a `cron` expression.
67
+ sig { returns(String) }
68
+ attr_accessor :event_type
69
+
70
+ sig { returns(String) }
71
+ attr_accessor :function_id
72
+
73
+ sig { returns(Time) }
74
+ attr_accessor :updated_at
75
+
76
+ # 5-field cron expression (minute hour day-of-month month day-of-week), evaluated
77
+ # in UTC. Present only on `cron` triggers.
78
+ sig { returns(T.nilable(String)) }
79
+ attr_accessor :cron
80
+
81
+ # Last time the schedule fired. Null until the first fire.
82
+ sig { returns(T.nilable(Time)) }
83
+ attr_accessor :last_run_at
84
+
85
+ # Next scheduled fire time. Present only on `cron` triggers.
86
+ sig { returns(T.nilable(Time)) }
87
+ attr_accessor :next_run_at
88
+
89
+ # Restrict the trigger to a single sender. Null means all senders in the project.
90
+ sig { returns(T.nilable(String)) }
91
+ attr_accessor :sender_id
92
+
93
+ # A subscription that runs a Zavu Function when a messaging event fires.
94
+ sig do
95
+ params(
96
+ id: String,
97
+ active: T::Boolean,
98
+ created_at: Time,
99
+ event_type: String,
100
+ function_id: String,
101
+ updated_at: Time,
102
+ cron: T.nilable(String),
103
+ last_run_at: T.nilable(Time),
104
+ next_run_at: T.nilable(Time),
105
+ sender_id: T.nilable(String)
106
+ ).returns(T.attached_class)
107
+ end
108
+ def self.new(
109
+ id:,
110
+ active:,
111
+ created_at:,
112
+ # Event type that fires the function. See GET /v1/functions/event-types for the
113
+ # supported list. The special type `cron` fires on a schedule instead of a
114
+ # messaging event and carries a `cron` expression.
115
+ event_type:,
116
+ function_id:,
117
+ updated_at:,
118
+ # 5-field cron expression (minute hour day-of-month month day-of-week), evaluated
119
+ # in UTC. Present only on `cron` triggers.
120
+ cron: nil,
121
+ # Last time the schedule fired. Null until the first fire.
122
+ last_run_at: nil,
123
+ # Next scheduled fire time. Present only on `cron` triggers.
124
+ next_run_at: nil,
125
+ # Restrict the trigger to a single sender. Null means all senders in the project.
126
+ sender_id: nil
127
+ )
128
+ end
129
+
130
+ sig do
131
+ override.returns(
132
+ {
133
+ id: String,
134
+ active: T::Boolean,
135
+ created_at: Time,
136
+ event_type: String,
137
+ function_id: String,
138
+ updated_at: Time,
139
+ cron: T.nilable(String),
140
+ last_run_at: T.nilable(Time),
141
+ next_run_at: T.nilable(Time),
142
+ sender_id: T.nilable(String)
143
+ }
144
+ )
145
+ end
146
+ def to_hash
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,48 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ module Functions
6
+ class TriggerUpdateParams < Zavudev::Internal::Type::BaseModel
7
+ extend Zavudev::Internal::Type::RequestParameters::Converter
8
+ include Zavudev::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Zavudev::Functions::TriggerUpdateParams,
14
+ Zavudev::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :trigger_id
20
+
21
+ sig { returns(T::Boolean) }
22
+ attr_accessor :active
23
+
24
+ sig do
25
+ params(
26
+ trigger_id: String,
27
+ active: T::Boolean,
28
+ request_options: Zavudev::RequestOptions::OrHash
29
+ ).returns(T.attached_class)
30
+ end
31
+ def self.new(trigger_id:, active:, request_options: {})
32
+ end
33
+
34
+ sig do
35
+ override.returns(
36
+ {
37
+ trigger_id: String,
38
+ active: T::Boolean,
39
+ request_options: Zavudev::RequestOptions
40
+ }
41
+ )
42
+ end
43
+ def to_hash
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ module Functions
6
+ class TriggerUpdateResponse < Zavudev::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ Zavudev::Models::Functions::TriggerUpdateResponse,
11
+ Zavudev::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ sig { returns(T::Boolean) }
16
+ attr_accessor :active
17
+
18
+ sig { returns(T::Boolean) }
19
+ attr_accessor :ok
20
+
21
+ sig do
22
+ params(active: T::Boolean, ok: T::Boolean).returns(T.attached_class)
23
+ end
24
+ def self.new(active:, ok:)
25
+ end
26
+
27
+ sig { override.returns({ active: T::Boolean, ok: T::Boolean }) }
28
+ def to_hash
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,60 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class IntrospectValidateEmailParams < Zavudev::Internal::Type::BaseModel
6
+ extend Zavudev::Internal::Type::RequestParameters::Converter
7
+ include Zavudev::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Zavudev::IntrospectValidateEmailParams,
13
+ Zavudev::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Single email address to validate.
18
+ sig { returns(T.nilable(String)) }
19
+ attr_reader :email
20
+
21
+ sig { params(email: String).void }
22
+ attr_writer :email
23
+
24
+ # Batch of email addresses to validate (max 100).
25
+ sig { returns(T.nilable(T::Array[String])) }
26
+ attr_reader :emails
27
+
28
+ sig { params(emails: T::Array[String]).void }
29
+ attr_writer :emails
30
+
31
+ sig do
32
+ params(
33
+ email: String,
34
+ emails: T::Array[String],
35
+ request_options: Zavudev::RequestOptions::OrHash
36
+ ).returns(T.attached_class)
37
+ end
38
+ def self.new(
39
+ # Single email address to validate.
40
+ email: nil,
41
+ # Batch of email addresses to validate (max 100).
42
+ emails: nil,
43
+ request_options: {}
44
+ )
45
+ end
46
+
47
+ sig do
48
+ override.returns(
49
+ {
50
+ email: String,
51
+ emails: T::Array[String],
52
+ request_options: Zavudev::RequestOptions
53
+ }
54
+ )
55
+ end
56
+ def to_hash
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,328 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class IntrospectValidateEmailResponse < Zavudev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Zavudev::Models::IntrospectValidateEmailResponse,
10
+ Zavudev::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # One result per submitted address, in the same order.
15
+ sig do
16
+ returns(
17
+ T::Array[Zavudev::Models::IntrospectValidateEmailResponse::Result]
18
+ )
19
+ end
20
+ attr_accessor :results
21
+
22
+ sig { returns(Zavudev::Models::IntrospectValidateEmailResponse::Summary) }
23
+ attr_reader :summary
24
+
25
+ sig do
26
+ params(
27
+ summary:
28
+ Zavudev::Models::IntrospectValidateEmailResponse::Summary::OrHash
29
+ ).void
30
+ end
31
+ attr_writer :summary
32
+
33
+ sig do
34
+ params(
35
+ results:
36
+ T::Array[
37
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::OrHash
38
+ ],
39
+ summary:
40
+ Zavudev::Models::IntrospectValidateEmailResponse::Summary::OrHash
41
+ ).returns(T.attached_class)
42
+ end
43
+ def self.new(
44
+ # One result per submitted address, in the same order.
45
+ results:,
46
+ summary:
47
+ )
48
+ end
49
+
50
+ sig do
51
+ override.returns(
52
+ {
53
+ results:
54
+ T::Array[
55
+ Zavudev::Models::IntrospectValidateEmailResponse::Result
56
+ ],
57
+ summary: Zavudev::Models::IntrospectValidateEmailResponse::Summary
58
+ }
59
+ )
60
+ end
61
+ def to_hash
62
+ end
63
+
64
+ class Result < Zavudev::Internal::Type::BaseModel
65
+ OrHash =
66
+ T.type_alias do
67
+ T.any(
68
+ Zavudev::Models::IntrospectValidateEmailResponse::Result,
69
+ Zavudev::Internal::AnyHash
70
+ )
71
+ end
72
+
73
+ # Domain part of the address. Null when the syntax is invalid.
74
+ sig { returns(T.nilable(String)) }
75
+ attr_accessor :domain
76
+
77
+ # The address exactly as submitted.
78
+ sig { returns(String) }
79
+ attr_accessor :email
80
+
81
+ # Lowercased, trimmed form of the address. Null when the syntax is invalid.
82
+ sig { returns(T.nilable(String)) }
83
+ attr_accessor :normalized
84
+
85
+ # Signals behind the verdict. Empty for a clean `deliverable` address.
86
+ sig do
87
+ returns(
88
+ T::Array[
89
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
90
+ ]
91
+ )
92
+ end
93
+ attr_accessor :reasons
94
+
95
+ # Validation verdict.
96
+ #
97
+ # - `deliverable`: nothing suggests the address will bounce.
98
+ # - `risky`: sendable, but a signal predicts elevated bounce/complaint odds (role
99
+ # address, disposable domain, MX-less domain, prior soft bounce).
100
+ # - `undeliverable`: will bounce or is blocked (invalid syntax, dead domain, or
101
+ # the address is on your suppression list after a hard bounce/complaint).
102
+ sig do
103
+ returns(
104
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Verdict::TaggedSymbol
105
+ )
106
+ end
107
+ attr_accessor :verdict
108
+
109
+ sig do
110
+ params(
111
+ domain: T.nilable(String),
112
+ email: String,
113
+ normalized: T.nilable(String),
114
+ reasons:
115
+ T::Array[
116
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::OrSymbol
117
+ ],
118
+ verdict:
119
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Verdict::OrSymbol
120
+ ).returns(T.attached_class)
121
+ end
122
+ def self.new(
123
+ # Domain part of the address. Null when the syntax is invalid.
124
+ domain:,
125
+ # The address exactly as submitted.
126
+ email:,
127
+ # Lowercased, trimmed form of the address. Null when the syntax is invalid.
128
+ normalized:,
129
+ # Signals behind the verdict. Empty for a clean `deliverable` address.
130
+ reasons:,
131
+ # Validation verdict.
132
+ #
133
+ # - `deliverable`: nothing suggests the address will bounce.
134
+ # - `risky`: sendable, but a signal predicts elevated bounce/complaint odds (role
135
+ # address, disposable domain, MX-less domain, prior soft bounce).
136
+ # - `undeliverable`: will bounce or is blocked (invalid syntax, dead domain, or
137
+ # the address is on your suppression list after a hard bounce/complaint).
138
+ verdict:
139
+ )
140
+ end
141
+
142
+ sig do
143
+ override.returns(
144
+ {
145
+ domain: T.nilable(String),
146
+ email: String,
147
+ normalized: T.nilable(String),
148
+ reasons:
149
+ T::Array[
150
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
151
+ ],
152
+ verdict:
153
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Verdict::TaggedSymbol
154
+ }
155
+ )
156
+ end
157
+ def to_hash
158
+ end
159
+
160
+ module Reason
161
+ extend Zavudev::Internal::Type::Enum
162
+
163
+ TaggedSymbol =
164
+ T.type_alias do
165
+ T.all(
166
+ Symbol,
167
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason
168
+ )
169
+ end
170
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
171
+
172
+ INVALID_SYNTAX =
173
+ T.let(
174
+ :invalid_syntax,
175
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
176
+ )
177
+ DOMAIN_NOT_FOUND =
178
+ T.let(
179
+ :domain_not_found,
180
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
181
+ )
182
+ DOMAIN_NO_MX =
183
+ T.let(
184
+ :domain_no_mx,
185
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
186
+ )
187
+ DISPOSABLE_DOMAIN =
188
+ T.let(
189
+ :disposable_domain,
190
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
191
+ )
192
+ ROLE_ADDRESS =
193
+ T.let(
194
+ :role_address,
195
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
196
+ )
197
+ SUPPRESSED_HARD_BOUNCE =
198
+ T.let(
199
+ :suppressed_hard_bounce,
200
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
201
+ )
202
+ SUPPRESSED_SOFT_BOUNCE =
203
+ T.let(
204
+ :suppressed_soft_bounce,
205
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
206
+ )
207
+ SUPPRESSED_COMPLAINT =
208
+ T.let(
209
+ :suppressed_complaint,
210
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
211
+ )
212
+ SUPPRESSED_MANUAL =
213
+ T.let(
214
+ :suppressed_manual,
215
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
216
+ )
217
+ SUPPRESSED_UNSUBSCRIBE =
218
+ T.let(
219
+ :suppressed_unsubscribe,
220
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
221
+ )
222
+
223
+ sig do
224
+ override.returns(
225
+ T::Array[
226
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Reason::TaggedSymbol
227
+ ]
228
+ )
229
+ end
230
+ def self.values
231
+ end
232
+ end
233
+
234
+ # Validation verdict.
235
+ #
236
+ # - `deliverable`: nothing suggests the address will bounce.
237
+ # - `risky`: sendable, but a signal predicts elevated bounce/complaint odds (role
238
+ # address, disposable domain, MX-less domain, prior soft bounce).
239
+ # - `undeliverable`: will bounce or is blocked (invalid syntax, dead domain, or
240
+ # the address is on your suppression list after a hard bounce/complaint).
241
+ module Verdict
242
+ extend Zavudev::Internal::Type::Enum
243
+
244
+ TaggedSymbol =
245
+ T.type_alias do
246
+ T.all(
247
+ Symbol,
248
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Verdict
249
+ )
250
+ end
251
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
252
+
253
+ DELIVERABLE =
254
+ T.let(
255
+ :deliverable,
256
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Verdict::TaggedSymbol
257
+ )
258
+ RISKY =
259
+ T.let(
260
+ :risky,
261
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Verdict::TaggedSymbol
262
+ )
263
+ UNDELIVERABLE =
264
+ T.let(
265
+ :undeliverable,
266
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Verdict::TaggedSymbol
267
+ )
268
+
269
+ sig do
270
+ override.returns(
271
+ T::Array[
272
+ Zavudev::Models::IntrospectValidateEmailResponse::Result::Verdict::TaggedSymbol
273
+ ]
274
+ )
275
+ end
276
+ def self.values
277
+ end
278
+ end
279
+ end
280
+
281
+ class Summary < Zavudev::Internal::Type::BaseModel
282
+ OrHash =
283
+ T.type_alias do
284
+ T.any(
285
+ Zavudev::Models::IntrospectValidateEmailResponse::Summary,
286
+ Zavudev::Internal::AnyHash
287
+ )
288
+ end
289
+
290
+ sig { returns(Integer) }
291
+ attr_accessor :deliverable
292
+
293
+ sig { returns(Integer) }
294
+ attr_accessor :risky
295
+
296
+ sig { returns(Integer) }
297
+ attr_accessor :total
298
+
299
+ sig { returns(Integer) }
300
+ attr_accessor :undeliverable
301
+
302
+ sig do
303
+ params(
304
+ deliverable: Integer,
305
+ risky: Integer,
306
+ total: Integer,
307
+ undeliverable: Integer
308
+ ).returns(T.attached_class)
309
+ end
310
+ def self.new(deliverable:, risky:, total:, undeliverable:)
311
+ end
312
+
313
+ sig do
314
+ override.returns(
315
+ {
316
+ deliverable: Integer,
317
+ risky: Integer,
318
+ total: Integer,
319
+ undeliverable: Integer
320
+ }
321
+ )
322
+ end
323
+ def to_hash
324
+ end
325
+ end
326
+ end
327
+ end
328
+ end
@@ -16,6 +16,11 @@ module Zavudev
16
16
  sig { returns(Time) }
17
17
  attr_accessor :created_at
18
18
 
19
+ # Who sent the message. Needed to render a thread: `status` cannot tell the two
20
+ # apart, because an inbound message is also stored as `delivered`.
21
+ sig { returns(Zavudev::Message::Direction::TaggedSymbol) }
22
+ attr_accessor :direction
23
+
19
24
  # Type of message. Non-text types are supported by WhatsApp and Telegram (varies
20
25
  # by type).
21
26
  #
@@ -120,6 +125,7 @@ module Zavudev
120
125
  id: String,
121
126
  channel: Zavudev::Channel::OrSymbol,
122
127
  created_at: Time,
128
+ direction: Zavudev::Message::Direction::OrSymbol,
123
129
  message_type: Zavudev::MessageType::OrSymbol,
124
130
  status: Zavudev::MessageStatus::OrSymbol,
125
131
  to: String,
@@ -143,6 +149,9 @@ module Zavudev
143
149
  # Delivery channel. Use 'auto' for intelligent routing.
144
150
  channel:,
145
151
  created_at:,
152
+ # Who sent the message. Needed to render a thread: `status` cannot tell the two
153
+ # apart, because an inbound message is also stored as `delivered`.
154
+ direction:,
146
155
  # Type of message. Non-text types are supported by WhatsApp and Telegram (varies
147
156
  # by type).
148
157
  #
@@ -195,6 +204,7 @@ module Zavudev
195
204
  id: String,
196
205
  channel: Zavudev::Channel::TaggedSymbol,
197
206
  created_at: Time,
207
+ direction: Zavudev::Message::Direction::TaggedSymbol,
198
208
  message_type: Zavudev::MessageType::TaggedSymbol,
199
209
  status: Zavudev::MessageStatus::TaggedSymbol,
200
210
  to: String,
@@ -216,6 +226,25 @@ module Zavudev
216
226
  end
217
227
  def to_hash
218
228
  end
229
+
230
+ # Who sent the message. Needed to render a thread: `status` cannot tell the two
231
+ # apart, because an inbound message is also stored as `delivered`.
232
+ module Direction
233
+ extend Zavudev::Internal::Type::Enum
234
+
235
+ TaggedSymbol =
236
+ T.type_alias { T.all(Symbol, Zavudev::Message::Direction) }
237
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
238
+
239
+ INBOUND = T.let(:inbound, Zavudev::Message::Direction::TaggedSymbol)
240
+ OUTBOUND = T.let(:outbound, Zavudev::Message::Direction::TaggedSymbol)
241
+
242
+ sig do
243
+ override.returns(T::Array[Zavudev::Message::Direction::TaggedSymbol])
244
+ end
245
+ def self.values
246
+ end
247
+ end
219
248
  end
220
249
  end
221
250
  end