zavudev 0.6.0 → 0.8.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 (426) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/README.md +1 -1
  4. data/lib/zavudev/client.rb +32 -0
  5. data/lib/zavudev/models/balance_retrieve_params.rb +14 -0
  6. data/lib/zavudev/models/balance_retrieve_response.rb +48 -0
  7. data/lib/zavudev/models/broadcast_contact.rb +10 -1
  8. data/lib/zavudev/models/broadcast_content.rb +18 -3
  9. data/lib/zavudev/models/broadcast_escalate_review_params.rb +20 -0
  10. data/lib/zavudev/models/broadcast_escalate_review_response.rb +16 -0
  11. data/lib/zavudev/models/broadcast_retry_review_params.rb +20 -0
  12. data/lib/zavudev/models/broadcast_retry_review_response.rb +16 -0
  13. data/lib/zavudev/models/broadcasts/contact_add_params.rb +18 -3
  14. data/lib/zavudev/models/contact.rb +4 -154
  15. data/lib/zavudev/models/contact_channel.rb +155 -0
  16. data/lib/zavudev/models/contact_create_params.rb +99 -0
  17. data/lib/zavudev/models/contact_dismiss_merge_suggestion_params.rb +20 -0
  18. data/lib/zavudev/models/contact_merge_params.rb +33 -0
  19. data/lib/zavudev/models/contacts/channel_add_params.rb +77 -0
  20. data/lib/zavudev/models/contacts/channel_add_response.rb +19 -0
  21. data/lib/zavudev/models/contacts/channel_remove_params.rb +28 -0
  22. data/lib/zavudev/models/contacts/channel_set_primary_params.rb +28 -0
  23. data/lib/zavudev/models/contacts/channel_set_primary_response.rb +19 -0
  24. data/lib/zavudev/models/contacts/channel_update_params.rb +53 -0
  25. data/lib/zavudev/models/contacts/channel_update_response.rb +19 -0
  26. data/lib/zavudev/models/data_export.rb +122 -0
  27. data/lib/zavudev/models/export_create_params.rb +54 -0
  28. data/lib/zavudev/models/export_create_response.rb +16 -0
  29. data/lib/zavudev/models/export_list_params.rb +49 -0
  30. data/lib/zavudev/models/export_retrieve_params.rb +20 -0
  31. data/lib/zavudev/models/export_retrieve_response.rb +16 -0
  32. data/lib/zavudev/models/invitation.rb +135 -0
  33. data/lib/zavudev/models/invitation_cancel_params.rb +20 -0
  34. data/lib/zavudev/models/invitation_cancel_response.rb +16 -0
  35. data/lib/zavudev/models/invitation_create_params.rb +68 -0
  36. data/lib/zavudev/models/invitation_create_response.rb +16 -0
  37. data/lib/zavudev/models/invitation_list_params.rb +50 -0
  38. data/lib/zavudev/models/invitation_retrieve_params.rb +20 -0
  39. data/lib/zavudev/models/invitation_retrieve_response.rb +16 -0
  40. data/lib/zavudev/models/message_content.rb +96 -3
  41. data/lib/zavudev/models/message_type.rb +1 -0
  42. data/lib/zavudev/models/number_10dlc/brand_create_params.rb +158 -0
  43. data/lib/zavudev/models/number_10dlc/brand_create_response.rb +18 -0
  44. data/lib/zavudev/models/number_10dlc/brand_delete_params.rb +22 -0
  45. data/lib/zavudev/models/number_10dlc/brand_list_params.rb +28 -0
  46. data/lib/zavudev/models/number_10dlc/brand_list_use_cases_params.rb +16 -0
  47. data/lib/zavudev/models/number_10dlc/brand_list_use_cases_response.rb +36 -0
  48. data/lib/zavudev/models/number_10dlc/brand_retrieve_params.rb +22 -0
  49. data/lib/zavudev/models/number_10dlc/brand_retrieve_response.rb +18 -0
  50. data/lib/zavudev/models/number_10dlc/brand_submit_params.rb +22 -0
  51. data/lib/zavudev/models/number_10dlc/brand_submit_response.rb +18 -0
  52. data/lib/zavudev/models/number_10dlc/brand_sync_status_params.rb +22 -0
  53. data/lib/zavudev/models/number_10dlc/brand_sync_status_response.rb +18 -0
  54. data/lib/zavudev/models/number_10dlc/brand_update_params.rb +159 -0
  55. data/lib/zavudev/models/number_10dlc/brand_update_response.rb +18 -0
  56. data/lib/zavudev/models/number_10dlc/campaign_create_params.rb +151 -0
  57. data/lib/zavudev/models/number_10dlc/campaign_create_response.rb +18 -0
  58. data/lib/zavudev/models/number_10dlc/campaign_delete_params.rb +22 -0
  59. data/lib/zavudev/models/number_10dlc/campaign_list_params.rb +38 -0
  60. data/lib/zavudev/models/number_10dlc/campaign_retrieve_params.rb +22 -0
  61. data/lib/zavudev/models/number_10dlc/campaign_retrieve_response.rb +18 -0
  62. data/lib/zavudev/models/number_10dlc/campaign_submit_params.rb +22 -0
  63. data/lib/zavudev/models/number_10dlc/campaign_submit_response.rb +18 -0
  64. data/lib/zavudev/models/number_10dlc/campaign_sync_status_params.rb +22 -0
  65. data/lib/zavudev/models/number_10dlc/campaign_sync_status_response.rb +18 -0
  66. data/lib/zavudev/models/number_10dlc/campaign_update_params.rb +64 -0
  67. data/lib/zavudev/models/number_10dlc/campaign_update_response.rb +18 -0
  68. data/lib/zavudev/models/number_10dlc/campaigns/phone_number_assign_params.rb +33 -0
  69. data/lib/zavudev/models/number_10dlc/campaigns/phone_number_assign_response.rb +20 -0
  70. data/lib/zavudev/models/number_10dlc/campaigns/phone_number_list_params.rb +24 -0
  71. data/lib/zavudev/models/number_10dlc/campaigns/phone_number_list_response.rb +27 -0
  72. data/lib/zavudev/models/number_10dlc/campaigns/phone_number_unassign_params.rb +30 -0
  73. data/lib/zavudev/models/number_10dlc/campaigns/ten_dlc_phone_number_assignment.rb +83 -0
  74. data/lib/zavudev/models/number_10dlc/ten_dlc_brand.rb +238 -0
  75. data/lib/zavudev/models/number_10dlc/ten_dlc_campaign.rb +243 -0
  76. data/lib/zavudev/models/plan_retrieve_params.rb +14 -0
  77. data/lib/zavudev/models/plan_retrieve_response.rb +155 -0
  78. data/lib/zavudev/models/senders/agent/agent_flow.rb +6 -101
  79. data/lib/zavudev/models/senders/agent/agent_tool.rb +3 -53
  80. data/lib/zavudev/models/senders/agent/flow_create_params.rb +6 -100
  81. data/lib/zavudev/models/senders/agent/flow_step.rb +61 -0
  82. data/lib/zavudev/models/senders/agent/flow_trigger.rb +51 -0
  83. data/lib/zavudev/models/senders/agent/flow_update_params.rb +6 -100
  84. data/lib/zavudev/models/senders/agent/tool_create_params.rb +3 -52
  85. data/lib/zavudev/models/senders/agent/tool_parameters.rb +58 -0
  86. data/lib/zavudev/models/senders/agent/tool_update_params.rb +3 -52
  87. data/lib/zavudev/models/senders/whats_app_sync_contacts.rb +51 -0
  88. data/lib/zavudev/models/senders/whats_app_sync_history.rb +60 -0
  89. data/lib/zavudev/models/senders/whats_app_sync_status.rb +60 -0
  90. data/lib/zavudev/models/senders/whatsapp_sync_retrieve_params.rb +22 -0
  91. data/lib/zavudev/models/senders/whatsapp_sync_retrieve_response.rb +19 -0
  92. data/lib/zavudev/models/senders/whatsapp_sync_start_contacts_sync_params.rb +22 -0
  93. data/lib/zavudev/models/senders/whatsapp_sync_start_contacts_sync_response.rb +27 -0
  94. data/lib/zavudev/models/senders/whatsapp_sync_start_history_sync_params.rb +22 -0
  95. data/lib/zavudev/models/senders/whatsapp_sync_start_history_sync_response.rb +27 -0
  96. data/lib/zavudev/models/sub_account.rb +91 -0
  97. data/lib/zavudev/models/sub_account_create_params.rb +49 -0
  98. data/lib/zavudev/models/sub_account_create_response.rb +16 -0
  99. data/lib/zavudev/models/sub_account_deactivate_params.rb +20 -0
  100. data/lib/zavudev/models/sub_account_deactivate_response.rb +24 -0
  101. data/lib/zavudev/models/sub_account_get_balance_params.rb +20 -0
  102. data/lib/zavudev/models/sub_account_get_balance_response.rb +48 -0
  103. data/lib/zavudev/models/sub_account_list_params.rb +26 -0
  104. data/lib/zavudev/models/sub_account_retrieve_params.rb +20 -0
  105. data/lib/zavudev/models/sub_account_retrieve_response.rb +16 -0
  106. data/lib/zavudev/models/sub_account_update_params.rb +60 -0
  107. data/lib/zavudev/models/sub_account_update_response.rb +16 -0
  108. data/lib/zavudev/models/sub_accounts/api_key_create_params.rb +50 -0
  109. data/lib/zavudev/models/sub_accounts/api_key_create_response.rb +59 -0
  110. data/lib/zavudev/models/sub_accounts/api_key_list_params.rb +22 -0
  111. data/lib/zavudev/models/sub_accounts/api_key_list_response.rb +98 -0
  112. data/lib/zavudev/models/sub_accounts/api_key_revoke_params.rb +28 -0
  113. data/lib/zavudev/models/template.rb +13 -1
  114. data/lib/zavudev/models/template_create_params.rb +53 -3
  115. data/lib/zavudev/models/url_list_verified_params.rb +49 -0
  116. data/lib/zavudev/models/url_retrieve_details_params.rb +20 -0
  117. data/lib/zavudev/models/url_retrieve_details_response.rb +16 -0
  118. data/lib/zavudev/models/url_submit_for_verification_params.rb +22 -0
  119. data/lib/zavudev/models/url_submit_for_verification_response.rb +16 -0
  120. data/lib/zavudev/models/usage_retrieve_params.rb +14 -0
  121. data/lib/zavudev/models/usage_retrieve_response.rb +77 -0
  122. data/lib/zavudev/models/verified_url.rb +90 -0
  123. data/lib/zavudev/models.rb +64 -0
  124. data/lib/zavudev/resources/balance.rb +33 -0
  125. data/lib/zavudev/resources/broadcasts.rb +40 -0
  126. data/lib/zavudev/resources/contacts/channels.rb +136 -0
  127. data/lib/zavudev/resources/contacts.rb +78 -0
  128. data/lib/zavudev/resources/exports.rb +89 -0
  129. data/lib/zavudev/resources/invitations.rb +118 -0
  130. data/lib/zavudev/resources/number_10dlc/brands.rb +251 -0
  131. data/lib/zavudev/resources/number_10dlc/campaigns/phone_numbers.rb +90 -0
  132. data/lib/zavudev/resources/number_10dlc/campaigns.rb +225 -0
  133. data/lib/zavudev/resources/number_10dlc.rb +22 -0
  134. data/lib/zavudev/resources/plan.rb +33 -0
  135. data/lib/zavudev/resources/senders/agent/flows.rb +4 -4
  136. data/lib/zavudev/resources/senders/agent/tools.rb +2 -2
  137. data/lib/zavudev/resources/senders/whatsapp_sync.rb +79 -0
  138. data/lib/zavudev/resources/senders.rb +4 -0
  139. data/lib/zavudev/resources/sub_accounts/api_keys.rb +91 -0
  140. data/lib/zavudev/resources/sub_accounts.rb +169 -0
  141. data/lib/zavudev/resources/templates.rb +7 -1
  142. data/lib/zavudev/resources/urls.rb +89 -0
  143. data/lib/zavudev/resources/usage.rb +33 -0
  144. data/lib/zavudev/version.rb +1 -1
  145. data/lib/zavudev.rb +118 -0
  146. data/rbi/zavudev/client.rbi +24 -0
  147. data/rbi/zavudev/models/balance_retrieve_params.rbi +27 -0
  148. data/rbi/zavudev/models/balance_retrieve_response.rbi +73 -0
  149. data/rbi/zavudev/models/broadcast_contact.rbi +9 -0
  150. data/rbi/zavudev/models/broadcast_content.rbi +17 -2
  151. data/rbi/zavudev/models/broadcast_escalate_review_params.rbi +38 -0
  152. data/rbi/zavudev/models/broadcast_escalate_review_response.rbi +31 -0
  153. data/rbi/zavudev/models/broadcast_retry_review_params.rbi +35 -0
  154. data/rbi/zavudev/models/broadcast_retry_review_response.rbi +31 -0
  155. data/rbi/zavudev/models/broadcasts/contact_add_params.rbi +23 -3
  156. data/rbi/zavudev/models/contact.rbi +4 -235
  157. data/rbi/zavudev/models/contact_channel.rbi +231 -0
  158. data/rbi/zavudev/models/contact_create_params.rbi +191 -0
  159. data/rbi/zavudev/models/contact_dismiss_merge_suggestion_params.rbi +38 -0
  160. data/rbi/zavudev/models/contact_merge_params.rbi +51 -0
  161. data/rbi/zavudev/models/contacts/channel_add_params.rbi +142 -0
  162. data/rbi/zavudev/models/contacts/channel_add_response.rbi +39 -0
  163. data/rbi/zavudev/models/contacts/channel_remove_params.rbi +48 -0
  164. data/rbi/zavudev/models/contacts/channel_set_primary_params.rbi +48 -0
  165. data/rbi/zavudev/models/contacts/channel_set_primary_response.rbi +39 -0
  166. data/rbi/zavudev/models/contacts/channel_update_params.rbi +80 -0
  167. data/rbi/zavudev/models/contacts/channel_update_response.rbi +39 -0
  168. data/rbi/zavudev/models/data_export.rbi +151 -0
  169. data/rbi/zavudev/models/export_create_params.rbi +106 -0
  170. data/rbi/zavudev/models/export_create_response.rbi +31 -0
  171. data/rbi/zavudev/models/export_list_params.rbi +89 -0
  172. data/rbi/zavudev/models/export_retrieve_params.rbi +35 -0
  173. data/rbi/zavudev/models/export_retrieve_response.rbi +31 -0
  174. data/rbi/zavudev/models/invitation.rbi +149 -0
  175. data/rbi/zavudev/models/invitation_cancel_params.rbi +35 -0
  176. data/rbi/zavudev/models/invitation_cancel_response.rbi +33 -0
  177. data/rbi/zavudev/models/invitation_create_params.rbi +103 -0
  178. data/rbi/zavudev/models/invitation_create_response.rbi +33 -0
  179. data/rbi/zavudev/models/invitation_list_params.rbi +99 -0
  180. data/rbi/zavudev/models/invitation_retrieve_params.rbi +35 -0
  181. data/rbi/zavudev/models/invitation_retrieve_response.rbi +33 -0
  182. data/rbi/zavudev/models/message_content.rbi +145 -2
  183. data/rbi/zavudev/models/message_type.rbi +1 -0
  184. data/rbi/zavudev/models/number_10dlc/brand_create_params.rbi +228 -0
  185. data/rbi/zavudev/models/number_10dlc/brand_create_response.rbi +35 -0
  186. data/rbi/zavudev/models/number_10dlc/brand_delete_params.rbi +40 -0
  187. data/rbi/zavudev/models/number_10dlc/brand_list_params.rbi +54 -0
  188. data/rbi/zavudev/models/number_10dlc/brand_list_use_cases_params.rbi +32 -0
  189. data/rbi/zavudev/models/number_10dlc/brand_list_use_cases_response.rbi +82 -0
  190. data/rbi/zavudev/models/number_10dlc/brand_retrieve_params.rbi +40 -0
  191. data/rbi/zavudev/models/number_10dlc/brand_retrieve_response.rbi +35 -0
  192. data/rbi/zavudev/models/number_10dlc/brand_submit_params.rbi +40 -0
  193. data/rbi/zavudev/models/number_10dlc/brand_submit_response.rbi +35 -0
  194. data/rbi/zavudev/models/number_10dlc/brand_sync_status_params.rbi +40 -0
  195. data/rbi/zavudev/models/number_10dlc/brand_sync_status_response.rbi +35 -0
  196. data/rbi/zavudev/models/number_10dlc/brand_update_params.rbi +261 -0
  197. data/rbi/zavudev/models/number_10dlc/brand_update_response.rbi +35 -0
  198. data/rbi/zavudev/models/number_10dlc/campaign_create_params.rbi +173 -0
  199. data/rbi/zavudev/models/number_10dlc/campaign_create_response.rbi +39 -0
  200. data/rbi/zavudev/models/number_10dlc/campaign_delete_params.rbi +40 -0
  201. data/rbi/zavudev/models/number_10dlc/campaign_list_params.rbi +69 -0
  202. data/rbi/zavudev/models/number_10dlc/campaign_retrieve_params.rbi +40 -0
  203. data/rbi/zavudev/models/number_10dlc/campaign_retrieve_response.rbi +39 -0
  204. data/rbi/zavudev/models/number_10dlc/campaign_submit_params.rbi +40 -0
  205. data/rbi/zavudev/models/number_10dlc/campaign_submit_response.rbi +39 -0
  206. data/rbi/zavudev/models/number_10dlc/campaign_sync_status_params.rbi +40 -0
  207. data/rbi/zavudev/models/number_10dlc/campaign_sync_status_response.rbi +39 -0
  208. data/rbi/zavudev/models/number_10dlc/campaign_update_params.rbi +109 -0
  209. data/rbi/zavudev/models/number_10dlc/campaign_update_response.rbi +39 -0
  210. data/rbi/zavudev/models/number_10dlc/campaigns/phone_number_assign_params.rbi +56 -0
  211. data/rbi/zavudev/models/number_10dlc/campaigns/phone_number_assign_response.rbi +54 -0
  212. data/rbi/zavudev/models/number_10dlc/campaigns/phone_number_list_params.rbi +42 -0
  213. data/rbi/zavudev/models/number_10dlc/campaigns/phone_number_list_response.rbi +57 -0
  214. data/rbi/zavudev/models/number_10dlc/campaigns/phone_number_unassign_params.rbi +50 -0
  215. data/rbi/zavudev/models/number_10dlc/campaigns/ten_dlc_phone_number_assignment.rbi +132 -0
  216. data/rbi/zavudev/models/number_10dlc/ten_dlc_brand.rbi +298 -0
  217. data/rbi/zavudev/models/number_10dlc/ten_dlc_campaign.rbi +269 -0
  218. data/rbi/zavudev/models/plan_retrieve_params.rbi +27 -0
  219. data/rbi/zavudev/models/plan_retrieve_response.rbi +306 -0
  220. data/rbi/zavudev/models/senders/agent/agent_flow.rbi +7 -233
  221. data/rbi/zavudev/models/senders/agent/agent_tool.rbi +4 -130
  222. data/rbi/zavudev/models/senders/agent/flow_create_params.rbi +7 -245
  223. data/rbi/zavudev/models/senders/agent/flow_step.rbi +115 -0
  224. data/rbi/zavudev/models/senders/agent/flow_trigger.rbi +108 -0
  225. data/rbi/zavudev/models/senders/agent/flow_update_params.rbi +8 -255
  226. data/rbi/zavudev/models/senders/agent/tool_create_params.rbi +4 -132
  227. data/rbi/zavudev/models/senders/agent/tool_parameters.rbi +124 -0
  228. data/rbi/zavudev/models/senders/agent/tool_update_params.rbi +4 -136
  229. data/rbi/zavudev/models/senders/whats_app_sync_contacts.rbi +104 -0
  230. data/rbi/zavudev/models/senders/whats_app_sync_history.rbi +117 -0
  231. data/rbi/zavudev/models/senders/whats_app_sync_status.rbi +126 -0
  232. data/rbi/zavudev/models/senders/whatsapp_sync_retrieve_params.rbi +40 -0
  233. data/rbi/zavudev/models/senders/whatsapp_sync_retrieve_response.rbi +39 -0
  234. data/rbi/zavudev/models/senders/whatsapp_sync_start_contacts_sync_params.rbi +40 -0
  235. data/rbi/zavudev/models/senders/whatsapp_sync_start_contacts_sync_response.rbi +50 -0
  236. data/rbi/zavudev/models/senders/whatsapp_sync_start_history_sync_params.rbi +40 -0
  237. data/rbi/zavudev/models/senders/whatsapp_sync_start_history_sync_response.rbi +50 -0
  238. data/rbi/zavudev/models/sub_account.rbi +111 -0
  239. data/rbi/zavudev/models/sub_account_create_params.rbi +76 -0
  240. data/rbi/zavudev/models/sub_account_create_response.rbi +33 -0
  241. data/rbi/zavudev/models/sub_account_deactivate_params.rbi +35 -0
  242. data/rbi/zavudev/models/sub_account_deactivate_response.rbi +36 -0
  243. data/rbi/zavudev/models/sub_account_get_balance_params.rbi +35 -0
  244. data/rbi/zavudev/models/sub_account_get_balance_response.rbi +73 -0
  245. data/rbi/zavudev/models/sub_account_list_params.rbi +49 -0
  246. data/rbi/zavudev/models/sub_account_retrieve_params.rbi +35 -0
  247. data/rbi/zavudev/models/sub_account_retrieve_response.rbi +33 -0
  248. data/rbi/zavudev/models/sub_account_update_params.rbi +113 -0
  249. data/rbi/zavudev/models/sub_account_update_response.rbi +33 -0
  250. data/rbi/zavudev/models/sub_accounts/api_key_create_params.rbi +117 -0
  251. data/rbi/zavudev/models/sub_accounts/api_key_create_response.rbi +136 -0
  252. data/rbi/zavudev/models/sub_accounts/api_key_list_params.rbi +40 -0
  253. data/rbi/zavudev/models/sub_accounts/api_key_list_response.rbi +177 -0
  254. data/rbi/zavudev/models/sub_accounts/api_key_revoke_params.rbi +48 -0
  255. data/rbi/zavudev/models/template.rbi +13 -0
  256. data/rbi/zavudev/models/template_create_params.rbi +91 -0
  257. data/rbi/zavudev/models/url_list_verified_params.rbi +97 -0
  258. data/rbi/zavudev/models/url_retrieve_details_params.rbi +35 -0
  259. data/rbi/zavudev/models/url_retrieve_details_response.rbi +31 -0
  260. data/rbi/zavudev/models/url_submit_for_verification_params.rbi +43 -0
  261. data/rbi/zavudev/models/url_submit_for_verification_response.rbi +31 -0
  262. data/rbi/zavudev/models/usage_retrieve_params.rbi +27 -0
  263. data/rbi/zavudev/models/usage_retrieve_response.rbi +150 -0
  264. data/rbi/zavudev/models/verified_url.rbi +133 -0
  265. data/rbi/zavudev/models.rbi +66 -0
  266. data/rbi/zavudev/resources/balance.rbi +22 -0
  267. data/rbi/zavudev/resources/broadcasts.rbi +22 -0
  268. data/rbi/zavudev/resources/contacts/channels.rbi +100 -0
  269. data/rbi/zavudev/resources/contacts.rbi +52 -0
  270. data/rbi/zavudev/resources/exports.rbi +62 -0
  271. data/rbi/zavudev/resources/invitations.rbi +83 -0
  272. data/rbi/zavudev/resources/number_10dlc/brands.rbi +198 -0
  273. data/rbi/zavudev/resources/number_10dlc/campaigns/phone_numbers.rbi +69 -0
  274. data/rbi/zavudev/resources/number_10dlc/campaigns.rbi +177 -0
  275. data/rbi/zavudev/resources/number_10dlc.rbi +18 -0
  276. data/rbi/zavudev/resources/plan.rbi +22 -0
  277. data/rbi/zavudev/resources/senders/agent/flows.rbi +4 -12
  278. data/rbi/zavudev/resources/senders/agent/tools.rbi +2 -4
  279. data/rbi/zavudev/resources/senders/whatsapp_sync.rbi +54 -0
  280. data/rbi/zavudev/resources/senders.rbi +3 -0
  281. data/rbi/zavudev/resources/sub_accounts/api_keys.rbi +66 -0
  282. data/rbi/zavudev/resources/sub_accounts.rbi +119 -0
  283. data/rbi/zavudev/resources/templates.rbi +9 -0
  284. data/rbi/zavudev/resources/urls.rbi +60 -0
  285. data/rbi/zavudev/resources/usage.rbi +22 -0
  286. data/sig/zavudev/client.rbs +16 -0
  287. data/sig/zavudev/models/balance_retrieve_params.rbs +15 -0
  288. data/sig/zavudev/models/balance_retrieve_response.rbs +42 -0
  289. data/sig/zavudev/models/broadcast_contact.rbs +9 -0
  290. data/sig/zavudev/models/broadcast_content.rbs +9 -0
  291. data/sig/zavudev/models/broadcast_escalate_review_params.rbs +23 -0
  292. data/sig/zavudev/models/broadcast_escalate_review_response.rbs +13 -0
  293. data/sig/zavudev/models/broadcast_retry_review_params.rbs +23 -0
  294. data/sig/zavudev/models/broadcast_retry_review_response.rbs +13 -0
  295. data/sig/zavudev/models/broadcasts/contact_add_params.rbs +13 -1
  296. data/sig/zavudev/models/contact.rbs +6 -153
  297. data/sig/zavudev/models/contact_channel.rbs +150 -0
  298. data/sig/zavudev/models/contact_create_params.rbs +97 -0
  299. data/sig/zavudev/models/contact_dismiss_merge_suggestion_params.rbs +23 -0
  300. data/sig/zavudev/models/contact_merge_params.rbs +28 -0
  301. data/sig/zavudev/models/contacts/channel_add_params.rbs +73 -0
  302. data/sig/zavudev/models/contacts/channel_add_response.rbs +15 -0
  303. data/sig/zavudev/models/contacts/channel_remove_params.rbs +30 -0
  304. data/sig/zavudev/models/contacts/channel_set_primary_params.rbs +30 -0
  305. data/sig/zavudev/models/contacts/channel_set_primary_response.rbs +15 -0
  306. data/sig/zavudev/models/contacts/channel_update_params.rbs +52 -0
  307. data/sig/zavudev/models/contacts/channel_update_response.rbs +15 -0
  308. data/sig/zavudev/models/data_export.rbs +102 -0
  309. data/sig/zavudev/models/export_create_params.rbs +59 -0
  310. data/sig/zavudev/models/export_create_response.rbs +13 -0
  311. data/sig/zavudev/models/export_list_params.rbs +57 -0
  312. data/sig/zavudev/models/export_retrieve_params.rbs +23 -0
  313. data/sig/zavudev/models/export_retrieve_response.rbs +13 -0
  314. data/sig/zavudev/models/invitation.rbs +104 -0
  315. data/sig/zavudev/models/invitation_cancel_params.rbs +23 -0
  316. data/sig/zavudev/models/invitation_cancel_response.rbs +13 -0
  317. data/sig/zavudev/models/invitation_create_params.rbs +63 -0
  318. data/sig/zavudev/models/invitation_create_response.rbs +13 -0
  319. data/sig/zavudev/models/invitation_list_params.rbs +58 -0
  320. data/sig/zavudev/models/invitation_retrieve_params.rbs +23 -0
  321. data/sig/zavudev/models/invitation_retrieve_response.rbs +13 -0
  322. data/sig/zavudev/models/message_content.rbs +66 -0
  323. data/sig/zavudev/models/message_type.rbs +2 -0
  324. data/sig/zavudev/models/number_10dlc/brand_create_params.rbs +141 -0
  325. data/sig/zavudev/models/number_10dlc/brand_create_response.rbs +15 -0
  326. data/sig/zavudev/models/number_10dlc/brand_delete_params.rbs +25 -0
  327. data/sig/zavudev/models/number_10dlc/brand_list_params.rbs +34 -0
  328. data/sig/zavudev/models/number_10dlc/brand_list_use_cases_params.rbs +17 -0
  329. data/sig/zavudev/models/number_10dlc/brand_list_use_cases_response.rbs +38 -0
  330. data/sig/zavudev/models/number_10dlc/brand_retrieve_params.rbs +25 -0
  331. data/sig/zavudev/models/number_10dlc/brand_retrieve_response.rbs +16 -0
  332. data/sig/zavudev/models/number_10dlc/brand_submit_params.rbs +25 -0
  333. data/sig/zavudev/models/number_10dlc/brand_submit_response.rbs +15 -0
  334. data/sig/zavudev/models/number_10dlc/brand_sync_status_params.rbs +25 -0
  335. data/sig/zavudev/models/number_10dlc/brand_sync_status_response.rbs +16 -0
  336. data/sig/zavudev/models/number_10dlc/brand_update_params.rbs +168 -0
  337. data/sig/zavudev/models/number_10dlc/brand_update_response.rbs +15 -0
  338. data/sig/zavudev/models/number_10dlc/campaign_create_params.rbs +128 -0
  339. data/sig/zavudev/models/number_10dlc/campaign_create_response.rbs +16 -0
  340. data/sig/zavudev/models/number_10dlc/campaign_delete_params.rbs +25 -0
  341. data/sig/zavudev/models/number_10dlc/campaign_list_params.rbs +40 -0
  342. data/sig/zavudev/models/number_10dlc/campaign_retrieve_params.rbs +25 -0
  343. data/sig/zavudev/models/number_10dlc/campaign_retrieve_response.rbs +16 -0
  344. data/sig/zavudev/models/number_10dlc/campaign_submit_params.rbs +25 -0
  345. data/sig/zavudev/models/number_10dlc/campaign_submit_response.rbs +16 -0
  346. data/sig/zavudev/models/number_10dlc/campaign_sync_status_params.rbs +25 -0
  347. data/sig/zavudev/models/number_10dlc/campaign_sync_status_response.rbs +16 -0
  348. data/sig/zavudev/models/number_10dlc/campaign_update_params.rbs +77 -0
  349. data/sig/zavudev/models/number_10dlc/campaign_update_response.rbs +16 -0
  350. data/sig/zavudev/models/number_10dlc/campaigns/phone_number_assign_params.rbs +32 -0
  351. data/sig/zavudev/models/number_10dlc/campaigns/phone_number_assign_response.rbs +24 -0
  352. data/sig/zavudev/models/number_10dlc/campaigns/phone_number_list_params.rbs +27 -0
  353. data/sig/zavudev/models/number_10dlc/campaigns/phone_number_list_response.rbs +29 -0
  354. data/sig/zavudev/models/number_10dlc/campaigns/phone_number_unassign_params.rbs +32 -0
  355. data/sig/zavudev/models/number_10dlc/campaigns/ten_dlc_phone_number_assignment.rbs +71 -0
  356. data/sig/zavudev/models/number_10dlc/ten_dlc_brand.rbs +179 -0
  357. data/sig/zavudev/models/number_10dlc/ten_dlc_campaign.rbs +175 -0
  358. data/sig/zavudev/models/plan_retrieve_params.rbs +15 -0
  359. data/sig/zavudev/models/plan_retrieve_response.rbs +158 -0
  360. data/sig/zavudev/models/senders/agent/agent_flow.rbs +8 -100
  361. data/sig/zavudev/models/senders/agent/agent_tool.rbs +4 -57
  362. data/sig/zavudev/models/senders/agent/flow_create_params.rbs +8 -100
  363. data/sig/zavudev/models/senders/agent/flow_step.rbs +55 -0
  364. data/sig/zavudev/models/senders/agent/flow_trigger.rbs +51 -0
  365. data/sig/zavudev/models/senders/agent/flow_update_params.rbs +12 -104
  366. data/sig/zavudev/models/senders/agent/tool_create_params.rbs +4 -57
  367. data/sig/zavudev/models/senders/agent/tool_parameters.rbs +60 -0
  368. data/sig/zavudev/models/senders/agent/tool_update_params.rbs +6 -59
  369. data/sig/zavudev/models/senders/whats_app_sync_contacts.rbs +45 -0
  370. data/sig/zavudev/models/senders/whats_app_sync_history.rbs +52 -0
  371. data/sig/zavudev/models/senders/whats_app_sync_status.rbs +56 -0
  372. data/sig/zavudev/models/senders/whatsapp_sync_retrieve_params.rbs +25 -0
  373. data/sig/zavudev/models/senders/whatsapp_sync_retrieve_response.rbs +16 -0
  374. data/sig/zavudev/models/senders/whatsapp_sync_start_contacts_sync_params.rbs +25 -0
  375. data/sig/zavudev/models/senders/whatsapp_sync_start_contacts_sync_response.rbs +24 -0
  376. data/sig/zavudev/models/senders/whatsapp_sync_start_history_sync_params.rbs +25 -0
  377. data/sig/zavudev/models/senders/whatsapp_sync_start_history_sync_response.rbs +24 -0
  378. data/sig/zavudev/models/sub_account.rbs +73 -0
  379. data/sig/zavudev/models/sub_account_create_params.rbs +47 -0
  380. data/sig/zavudev/models/sub_account_create_response.rbs +13 -0
  381. data/sig/zavudev/models/sub_account_deactivate_params.rbs +20 -0
  382. data/sig/zavudev/models/sub_account_deactivate_response.rbs +16 -0
  383. data/sig/zavudev/models/sub_account_get_balance_params.rbs +20 -0
  384. data/sig/zavudev/models/sub_account_get_balance_response.rbs +42 -0
  385. data/sig/zavudev/models/sub_account_list_params.rbs +32 -0
  386. data/sig/zavudev/models/sub_account_retrieve_params.rbs +20 -0
  387. data/sig/zavudev/models/sub_account_retrieve_response.rbs +13 -0
  388. data/sig/zavudev/models/sub_account_update_params.rbs +72 -0
  389. data/sig/zavudev/models/sub_account_update_response.rbs +13 -0
  390. data/sig/zavudev/models/sub_accounts/api_key_create_params.rbs +60 -0
  391. data/sig/zavudev/models/sub_accounts/api_key_create_response.rbs +63 -0
  392. data/sig/zavudev/models/sub_accounts/api_key_list_params.rbs +22 -0
  393. data/sig/zavudev/models/sub_accounts/api_key_list_response.rbs +94 -0
  394. data/sig/zavudev/models/sub_accounts/api_key_revoke_params.rbs +30 -0
  395. data/sig/zavudev/models/template.rbs +7 -0
  396. data/sig/zavudev/models/template_create_params.rbs +43 -0
  397. data/sig/zavudev/models/url_list_verified_params.rbs +57 -0
  398. data/sig/zavudev/models/url_retrieve_details_params.rbs +23 -0
  399. data/sig/zavudev/models/url_retrieve_details_response.rbs +13 -0
  400. data/sig/zavudev/models/url_submit_for_verification_params.rbs +20 -0
  401. data/sig/zavudev/models/url_submit_for_verification_response.rbs +13 -0
  402. data/sig/zavudev/models/usage_retrieve_params.rbs +15 -0
  403. data/sig/zavudev/models/usage_retrieve_response.rbs +69 -0
  404. data/sig/zavudev/models/verified_url.rbs +80 -0
  405. data/sig/zavudev/models.rbs +64 -0
  406. data/sig/zavudev/resources/balance.rbs +11 -0
  407. data/sig/zavudev/resources/broadcasts.rbs +10 -0
  408. data/sig/zavudev/resources/contacts/channels.rbs +40 -0
  409. data/sig/zavudev/resources/contacts.rbs +20 -0
  410. data/sig/zavudev/resources/exports.rbs +26 -0
  411. data/sig/zavudev/resources/invitations.rbs +34 -0
  412. data/sig/zavudev/resources/number_10dlc/brands.rbs +82 -0
  413. data/sig/zavudev/resources/number_10dlc/campaigns/phone_numbers.rbs +28 -0
  414. data/sig/zavudev/resources/number_10dlc/campaigns.rbs +73 -0
  415. data/sig/zavudev/resources/number_10dlc.rbs +11 -0
  416. data/sig/zavudev/resources/plan.rbs +11 -0
  417. data/sig/zavudev/resources/senders/agent/flows.rbs +4 -4
  418. data/sig/zavudev/resources/senders/agent/tools.rbs +2 -2
  419. data/sig/zavudev/resources/senders/whatsapp_sync.rbs +24 -0
  420. data/sig/zavudev/resources/senders.rbs +2 -0
  421. data/sig/zavudev/resources/sub_accounts/api_keys.rbs +28 -0
  422. data/sig/zavudev/resources/sub_accounts.rbs +48 -0
  423. data/sig/zavudev/resources/templates.rbs +3 -0
  424. data/sig/zavudev/resources/urls.rbs +24 -0
  425. data/sig/zavudev/resources/usage.rbs +11 -0
  426. metadata +356 -2
@@ -0,0 +1,103 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class InvitationCreateParams < 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(Zavudev::InvitationCreateParams, Zavudev::Internal::AnyHash)
12
+ end
13
+
14
+ # ISO country codes for allowed phone numbers.
15
+ sig { returns(T.nilable(T::Array[String])) }
16
+ attr_reader :allowed_phone_countries
17
+
18
+ sig { params(allowed_phone_countries: T::Array[String]).void }
19
+ attr_writer :allowed_phone_countries
20
+
21
+ # Email of the client being invited.
22
+ sig { returns(T.nilable(String)) }
23
+ attr_reader :client_email
24
+
25
+ sig { params(client_email: String).void }
26
+ attr_writer :client_email
27
+
28
+ # Name of the client being invited.
29
+ sig { returns(T.nilable(String)) }
30
+ attr_reader :client_name
31
+
32
+ sig { params(client_name: String).void }
33
+ attr_writer :client_name
34
+
35
+ # Phone number of the client in E.164 format.
36
+ sig { returns(T.nilable(String)) }
37
+ attr_reader :client_phone
38
+
39
+ sig { params(client_phone: String).void }
40
+ attr_writer :client_phone
41
+
42
+ # Number of days until the invitation expires.
43
+ sig { returns(T.nilable(Integer)) }
44
+ attr_reader :expires_in_days
45
+
46
+ sig { params(expires_in_days: Integer).void }
47
+ attr_writer :expires_in_days
48
+
49
+ # ID of a Zavu phone number to pre-assign for WhatsApp registration. If provided,
50
+ # the client will use this number instead of their own.
51
+ sig { returns(T.nilable(String)) }
52
+ attr_reader :phone_number_id
53
+
54
+ sig { params(phone_number_id: String).void }
55
+ attr_writer :phone_number_id
56
+
57
+ sig do
58
+ params(
59
+ allowed_phone_countries: T::Array[String],
60
+ client_email: String,
61
+ client_name: String,
62
+ client_phone: String,
63
+ expires_in_days: Integer,
64
+ phone_number_id: String,
65
+ request_options: Zavudev::RequestOptions::OrHash
66
+ ).returns(T.attached_class)
67
+ end
68
+ def self.new(
69
+ # ISO country codes for allowed phone numbers.
70
+ allowed_phone_countries: nil,
71
+ # Email of the client being invited.
72
+ client_email: nil,
73
+ # Name of the client being invited.
74
+ client_name: nil,
75
+ # Phone number of the client in E.164 format.
76
+ client_phone: nil,
77
+ # Number of days until the invitation expires.
78
+ expires_in_days: nil,
79
+ # ID of a Zavu phone number to pre-assign for WhatsApp registration. If provided,
80
+ # the client will use this number instead of their own.
81
+ phone_number_id: nil,
82
+ request_options: {}
83
+ )
84
+ end
85
+
86
+ sig do
87
+ override.returns(
88
+ {
89
+ allowed_phone_countries: T::Array[String],
90
+ client_email: String,
91
+ client_name: String,
92
+ client_phone: String,
93
+ expires_in_days: Integer,
94
+ phone_number_id: String,
95
+ request_options: Zavudev::RequestOptions
96
+ }
97
+ )
98
+ end
99
+ def to_hash
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class InvitationCreateResponse < Zavudev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Zavudev::Models::InvitationCreateResponse,
10
+ Zavudev::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(Zavudev::Invitation) }
15
+ attr_reader :invitation
16
+
17
+ sig { params(invitation: Zavudev::Invitation::OrHash).void }
18
+ attr_writer :invitation
19
+
20
+ sig do
21
+ params(invitation: Zavudev::Invitation::OrHash).returns(
22
+ T.attached_class
23
+ )
24
+ end
25
+ def self.new(invitation:)
26
+ end
27
+
28
+ sig { override.returns({ invitation: Zavudev::Invitation }) }
29
+ def to_hash
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,99 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class InvitationListParams < 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(Zavudev::InvitationListParams, Zavudev::Internal::AnyHash)
12
+ end
13
+
14
+ sig { returns(T.nilable(String)) }
15
+ attr_reader :cursor
16
+
17
+ sig { params(cursor: String).void }
18
+ attr_writer :cursor
19
+
20
+ sig { returns(T.nilable(Integer)) }
21
+ attr_reader :limit
22
+
23
+ sig { params(limit: Integer).void }
24
+ attr_writer :limit
25
+
26
+ # Current status of the partner invitation.
27
+ sig do
28
+ returns(T.nilable(Zavudev::InvitationListParams::Status::OrSymbol))
29
+ end
30
+ attr_reader :status
31
+
32
+ sig do
33
+ params(status: Zavudev::InvitationListParams::Status::OrSymbol).void
34
+ end
35
+ attr_writer :status
36
+
37
+ sig do
38
+ params(
39
+ cursor: String,
40
+ limit: Integer,
41
+ status: Zavudev::InvitationListParams::Status::OrSymbol,
42
+ request_options: Zavudev::RequestOptions::OrHash
43
+ ).returns(T.attached_class)
44
+ end
45
+ def self.new(
46
+ cursor: nil,
47
+ limit: nil,
48
+ # Current status of the partner invitation.
49
+ status: nil,
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ sig do
55
+ override.returns(
56
+ {
57
+ cursor: String,
58
+ limit: Integer,
59
+ status: Zavudev::InvitationListParams::Status::OrSymbol,
60
+ request_options: Zavudev::RequestOptions
61
+ }
62
+ )
63
+ end
64
+ def to_hash
65
+ end
66
+
67
+ # Current status of the partner invitation.
68
+ module Status
69
+ extend Zavudev::Internal::Type::Enum
70
+
71
+ TaggedSymbol =
72
+ T.type_alias { T.all(Symbol, Zavudev::InvitationListParams::Status) }
73
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
74
+
75
+ PENDING =
76
+ T.let(:pending, Zavudev::InvitationListParams::Status::TaggedSymbol)
77
+ IN_PROGRESS =
78
+ T.let(
79
+ :in_progress,
80
+ Zavudev::InvitationListParams::Status::TaggedSymbol
81
+ )
82
+ COMPLETED =
83
+ T.let(:completed, Zavudev::InvitationListParams::Status::TaggedSymbol)
84
+ EXPIRED =
85
+ T.let(:expired, Zavudev::InvitationListParams::Status::TaggedSymbol)
86
+ CANCELLED =
87
+ T.let(:cancelled, Zavudev::InvitationListParams::Status::TaggedSymbol)
88
+
89
+ sig do
90
+ override.returns(
91
+ T::Array[Zavudev::InvitationListParams::Status::TaggedSymbol]
92
+ )
93
+ end
94
+ def self.values
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,35 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class InvitationRetrieveParams < 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(Zavudev::InvitationRetrieveParams, Zavudev::Internal::AnyHash)
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :invitation_id
16
+
17
+ sig do
18
+ params(
19
+ invitation_id: String,
20
+ request_options: Zavudev::RequestOptions::OrHash
21
+ ).returns(T.attached_class)
22
+ end
23
+ def self.new(invitation_id:, request_options: {})
24
+ end
25
+
26
+ sig do
27
+ override.returns(
28
+ { invitation_id: String, request_options: Zavudev::RequestOptions }
29
+ )
30
+ end
31
+ def to_hash
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module Zavudev
4
+ module Models
5
+ class InvitationRetrieveResponse < Zavudev::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Zavudev::Models::InvitationRetrieveResponse,
10
+ Zavudev::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(Zavudev::Invitation) }
15
+ attr_reader :invitation
16
+
17
+ sig { params(invitation: Zavudev::Invitation::OrHash).void }
18
+ attr_writer :invitation
19
+
20
+ sig do
21
+ params(invitation: Zavudev::Invitation::OrHash).returns(
22
+ T.attached_class
23
+ )
24
+ end
25
+ def self.new(invitation:)
26
+ end
27
+
28
+ sig { override.returns({ invitation: Zavudev::Invitation }) }
29
+ def to_hash
30
+ end
31
+ end
32
+ end
33
+ end
@@ -28,6 +28,50 @@ module Zavudev
28
28
  end
29
29
  attr_writer :contacts
30
30
 
31
+ # Button label for cta_url messages.
32
+ sig { returns(T.nilable(String)) }
33
+ attr_reader :cta_display_text
34
+
35
+ sig { params(cta_display_text: String).void }
36
+ attr_writer :cta_display_text
37
+
38
+ # Public HTTPS URL of the header media when ctaHeaderType is 'image', 'video', or
39
+ # 'document'. WhatsApp fetches this URL — it must be publicly reachable and return
40
+ # the declared content type.
41
+ sig { returns(T.nilable(String)) }
42
+ attr_reader :cta_header_media_url
43
+
44
+ sig { params(cta_header_media_url: String).void }
45
+ attr_writer :cta_header_media_url
46
+
47
+ # Header text when ctaHeaderType is 'text'.
48
+ sig { returns(T.nilable(String)) }
49
+ attr_reader :cta_header_text
50
+
51
+ sig { params(cta_header_text: String).void }
52
+ attr_writer :cta_header_text
53
+
54
+ # Optional header type for cta_url messages.
55
+ sig do
56
+ returns(T.nilable(Zavudev::MessageContent::CtaHeaderType::OrSymbol))
57
+ end
58
+ attr_reader :cta_header_type
59
+
60
+ sig do
61
+ params(
62
+ cta_header_type: Zavudev::MessageContent::CtaHeaderType::OrSymbol
63
+ ).void
64
+ end
65
+ attr_writer :cta_header_type
66
+
67
+ # Destination URL opened in the device's default browser when the button is
68
+ # tapped. Used with messageType=cta_url. WhatsApp requires HTTPS in production.
69
+ sig { returns(T.nilable(String)) }
70
+ attr_reader :cta_url
71
+
72
+ sig { params(cta_url: String).void }
73
+ attr_writer :cta_url
74
+
31
75
  # Emoji for reaction messages.
32
76
  sig { returns(T.nilable(String)) }
33
77
  attr_reader :emoji
@@ -42,6 +86,13 @@ module Zavudev
42
86
  sig { params(filename: String).void }
43
87
  attr_writer :filename
44
88
 
89
+ # Optional footer text for cta_url messages.
90
+ sig { returns(T.nilable(String)) }
91
+ attr_reader :footer_text
92
+
93
+ sig { params(footer_text: String).void }
94
+ attr_writer :footer_text
95
+
45
96
  # Latitude for location messages.
46
97
  sig { returns(T.nilable(Float)) }
47
98
  attr_reader :latitude
@@ -116,6 +167,26 @@ module Zavudev
116
167
  end
117
168
  attr_writer :sections
118
169
 
170
+ # Variables for dynamic button placeholders (URL buttons and OTP buttons). Keys
171
+ # are the button index (0, 1, 2) in the template's `buttons` array — not the
172
+ # placeholder name. Values substitute the `{{1}}` placeholder inside that button's
173
+ # URL.
174
+ #
175
+ # **WhatsApp constraints:**
176
+ #
177
+ # - URL buttons only accept `{{1}}` — positional, numeric, no whitespace, no name.
178
+ # Named placeholders like `{{token}}` are stored as literal URL text by Meta and
179
+ # cannot be substituted.
180
+ # - At most one placeholder per URL button.
181
+ # - A template may have at most three buttons.
182
+ # - Static URL buttons (no placeholder) and `quick_reply` buttons are not included
183
+ # here.
184
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
185
+ attr_reader :template_button_variables
186
+
187
+ sig { params(template_button_variables: T::Hash[Symbol, String]).void }
188
+ attr_writer :template_button_variables
189
+
119
190
  # Template ID for template messages.
120
191
  sig { returns(T.nilable(String)) }
121
192
  attr_reader :template_id
@@ -123,7 +194,8 @@ module Zavudev
123
194
  sig { params(template_id: String).void }
124
195
  attr_writer :template_id
125
196
 
126
- # Variables for template rendering. Keys are variable positions (1, 2, 3...).
197
+ # Variables for body placeholders. Keys are positions (1, 2, 3, ...) matching the
198
+ # order placeholders appear in the template body.
127
199
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
128
200
  attr_reader :template_variables
129
201
 
@@ -135,8 +207,14 @@ module Zavudev
135
207
  params(
136
208
  buttons: T::Array[Zavudev::MessageContent::Button::OrHash],
137
209
  contacts: T::Array[Zavudev::MessageContent::Contact::OrHash],
210
+ cta_display_text: String,
211
+ cta_header_media_url: String,
212
+ cta_header_text: String,
213
+ cta_header_type: Zavudev::MessageContent::CtaHeaderType::OrSymbol,
214
+ cta_url: String,
138
215
  emoji: String,
139
216
  filename: String,
217
+ footer_text: String,
140
218
  latitude: Float,
141
219
  list_button: String,
142
220
  location_address: String,
@@ -147,6 +225,7 @@ module Zavudev
147
225
  mime_type: String,
148
226
  react_to_message_id: String,
149
227
  sections: T::Array[Zavudev::MessageContent::Section::OrHash],
228
+ template_button_variables: T::Hash[Symbol, String],
150
229
  template_id: String,
151
230
  template_variables: T::Hash[Symbol, String]
152
231
  ).returns(T.attached_class)
@@ -156,10 +235,25 @@ module Zavudev
156
235
  buttons: nil,
157
236
  # Contact cards for contact messages.
158
237
  contacts: nil,
238
+ # Button label for cta_url messages.
239
+ cta_display_text: nil,
240
+ # Public HTTPS URL of the header media when ctaHeaderType is 'image', 'video', or
241
+ # 'document'. WhatsApp fetches this URL — it must be publicly reachable and return
242
+ # the declared content type.
243
+ cta_header_media_url: nil,
244
+ # Header text when ctaHeaderType is 'text'.
245
+ cta_header_text: nil,
246
+ # Optional header type for cta_url messages.
247
+ cta_header_type: nil,
248
+ # Destination URL opened in the device's default browser when the button is
249
+ # tapped. Used with messageType=cta_url. WhatsApp requires HTTPS in production.
250
+ cta_url: nil,
159
251
  # Emoji for reaction messages.
160
252
  emoji: nil,
161
253
  # Filename for documents.
162
254
  filename: nil,
255
+ # Optional footer text for cta_url messages.
256
+ footer_text: nil,
163
257
  # Latitude for location messages.
164
258
  latitude: nil,
165
259
  # Button text for list messages.
@@ -180,9 +274,25 @@ module Zavudev
180
274
  react_to_message_id: nil,
181
275
  # Sections for list messages.
182
276
  sections: nil,
277
+ # Variables for dynamic button placeholders (URL buttons and OTP buttons). Keys
278
+ # are the button index (0, 1, 2) in the template's `buttons` array — not the
279
+ # placeholder name. Values substitute the `{{1}}` placeholder inside that button's
280
+ # URL.
281
+ #
282
+ # **WhatsApp constraints:**
283
+ #
284
+ # - URL buttons only accept `{{1}}` — positional, numeric, no whitespace, no name.
285
+ # Named placeholders like `{{token}}` are stored as literal URL text by Meta and
286
+ # cannot be substituted.
287
+ # - At most one placeholder per URL button.
288
+ # - A template may have at most three buttons.
289
+ # - Static URL buttons (no placeholder) and `quick_reply` buttons are not included
290
+ # here.
291
+ template_button_variables: nil,
183
292
  # Template ID for template messages.
184
293
  template_id: nil,
185
- # Variables for template rendering. Keys are variable positions (1, 2, 3...).
294
+ # Variables for body placeholders. Keys are positions (1, 2, 3, ...) matching the
295
+ # order placeholders appear in the template body.
186
296
  template_variables: nil
187
297
  )
188
298
  end
@@ -192,8 +302,14 @@ module Zavudev
192
302
  {
193
303
  buttons: T::Array[Zavudev::MessageContent::Button],
194
304
  contacts: T::Array[Zavudev::MessageContent::Contact],
305
+ cta_display_text: String,
306
+ cta_header_media_url: String,
307
+ cta_header_text: String,
308
+ cta_header_type: Zavudev::MessageContent::CtaHeaderType::OrSymbol,
309
+ cta_url: String,
195
310
  emoji: String,
196
311
  filename: String,
312
+ footer_text: String,
197
313
  latitude: Float,
198
314
  list_button: String,
199
315
  location_address: String,
@@ -204,6 +320,7 @@ module Zavudev
204
320
  mime_type: String,
205
321
  react_to_message_id: String,
206
322
  sections: T::Array[Zavudev::MessageContent::Section],
323
+ template_button_variables: T::Hash[Symbol, String],
207
324
  template_id: String,
208
325
  template_variables: T::Hash[Symbol, String]
209
326
  }
@@ -264,6 +381,32 @@ module Zavudev
264
381
  end
265
382
  end
266
383
 
384
+ # Optional header type for cta_url messages.
385
+ module CtaHeaderType
386
+ extend Zavudev::Internal::Type::Enum
387
+
388
+ TaggedSymbol =
389
+ T.type_alias { T.all(Symbol, Zavudev::MessageContent::CtaHeaderType) }
390
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
391
+
392
+ TEXT =
393
+ T.let(:text, Zavudev::MessageContent::CtaHeaderType::TaggedSymbol)
394
+ IMAGE =
395
+ T.let(:image, Zavudev::MessageContent::CtaHeaderType::TaggedSymbol)
396
+ VIDEO =
397
+ T.let(:video, Zavudev::MessageContent::CtaHeaderType::TaggedSymbol)
398
+ DOCUMENT =
399
+ T.let(:document, Zavudev::MessageContent::CtaHeaderType::TaggedSymbol)
400
+
401
+ sig do
402
+ override.returns(
403
+ T::Array[Zavudev::MessageContent::CtaHeaderType::TaggedSymbol]
404
+ )
405
+ end
406
+ def self.values
407
+ end
408
+ end
409
+
267
410
  class Section < Zavudev::Internal::Type::BaseModel
268
411
  OrHash =
269
412
  T.type_alias do
@@ -20,6 +20,7 @@ module Zavudev
20
20
  CONTACT = T.let(:contact, Zavudev::MessageType::TaggedSymbol)
21
21
  BUTTONS = T.let(:buttons, Zavudev::MessageType::TaggedSymbol)
22
22
  LIST = T.let(:list, Zavudev::MessageType::TaggedSymbol)
23
+ CTA_URL = T.let(:cta_url, Zavudev::MessageType::TaggedSymbol)
23
24
  REACTION = T.let(:reaction, Zavudev::MessageType::TaggedSymbol)
24
25
  TEMPLATE = T.let(:template, Zavudev::MessageType::TaggedSymbol)
25
26