sentdm 0.44.0 → 0.46.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 (484) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +11 -11
  4. data/lib/sentdm/client.rb +66 -0
  5. data/lib/sentdm/internal/sender_profiles_page.rb +140 -0
  6. data/lib/sentdm/internal/type/enum.rb +11 -11
  7. data/lib/sentdm/models/account.rb +173 -0
  8. data/lib/sentdm/models/account_channels.rb +39 -0
  9. data/lib/sentdm/models/account_profile.rb +86 -0
  10. data/lib/sentdm/models/account_rcs_channel.rb +26 -0
  11. data/lib/sentdm/models/account_sms_channel.rb +26 -0
  12. data/lib/sentdm/models/account_whatsapp_channel.rb +35 -0
  13. data/lib/sentdm/models/api_response_of_account.rb +48 -0
  14. data/lib/sentdm/models/api_response_of_cancelled_message.rb +43 -0
  15. data/lib/sentdm/models/api_response_of_channels_state.rb +48 -0
  16. data/lib/sentdm/models/api_response_of_compliance_requirements.rb +47 -0
  17. data/lib/sentdm/models/api_response_of_contacts_list.rb +42 -0
  18. data/lib/sentdm/models/api_response_of_message.rb +51 -0
  19. data/lib/sentdm/models/api_response_of_message_activities.rb +43 -0
  20. data/lib/sentdm/models/api_response_of_number_lookup_result.rb +43 -0
  21. data/lib/sentdm/models/api_response_of_profile_completion_accepted.rb +47 -0
  22. data/lib/sentdm/models/api_response_of_profile_completion_result.rb +47 -0
  23. data/lib/sentdm/models/api_response_of_profiles_list.rb +43 -0
  24. data/lib/sentdm/models/api_response_of_sender_profile.rb +54 -0
  25. data/lib/sentdm/models/api_response_of_sender_profiles_list.rb +42 -0
  26. data/lib/sentdm/models/api_response_of_templates_list.rb +42 -0
  27. data/lib/sentdm/models/api_response_of_users_list.rb +43 -0
  28. data/lib/sentdm/models/api_response_of_webhook_event_types_list.rb +43 -0
  29. data/lib/sentdm/models/api_response_of_webhook_events_list.rb +42 -0
  30. data/lib/sentdm/models/{webhook_rotate_secret_response.rb → api_response_of_webhook_secret.rb} +4 -17
  31. data/lib/sentdm/models/{webhook_test_response.rb → api_response_of_webhook_test.rb} +4 -23
  32. data/lib/sentdm/models/api_response_of_webhooks_list.rb +42 -0
  33. data/lib/sentdm/models/billing_contact.rb +35 -0
  34. data/lib/sentdm/models/brand_business.rb +96 -0
  35. data/lib/sentdm/models/brand_business_info.rb +3 -20
  36. data/lib/sentdm/models/brand_compliance.rb +75 -0
  37. data/lib/sentdm/models/brand_contact.rb +56 -0
  38. data/lib/sentdm/models/brand_with_kyc.rb +129 -0
  39. data/lib/sentdm/models/cancelled_message.rb +28 -0
  40. data/lib/sentdm/models/channel_event_payload.rb +3 -114
  41. data/lib/sentdm/models/channel_list_params.rb +20 -0
  42. data/lib/sentdm/models/channel_score.rb +35 -0
  43. data/lib/sentdm/models/channels/api_response_of_list_of_sms_market.rb +45 -0
  44. data/lib/sentdm/models/channels/api_response_of_rcs_agent.rb +60 -0
  45. data/lib/sentdm/models/channels/api_response_of_sms_market.rb +54 -0
  46. data/lib/sentdm/models/channels/api_response_of_whatsapp_channel.rb +47 -0
  47. data/lib/sentdm/models/channels/market_compliance.rb +409 -0
  48. data/lib/sentdm/models/channels/rc_create_params.rb +260 -0
  49. data/lib/sentdm/models/channels/rcs_address.rb +43 -0
  50. data/lib/sentdm/models/channels/rcs_agent.rb +278 -0
  51. data/lib/sentdm/models/channels/sms_create_params.rb +173 -0
  52. data/lib/sentdm/models/channels/sms_list_params.rb +22 -0
  53. data/lib/sentdm/models/channels/sms_market.rb +158 -0
  54. data/lib/sentdm/models/channels/sms_number.rb +41 -0
  55. data/lib/sentdm/models/channels/sms_number_request.rb +33 -0
  56. data/lib/sentdm/models/channels/sms_retrieve_params.rb +34 -0
  57. data/lib/sentdm/models/channels/sms_update_params.rb +64 -0
  58. data/lib/sentdm/models/channels/supplied_compliance.rb +89 -0
  59. data/lib/sentdm/models/channels/supplied_document.rb +35 -0
  60. data/lib/sentdm/models/channels/whatsapp_channel.rb +109 -0
  61. data/lib/sentdm/models/channels/whatsapp_create_params.rb +65 -0
  62. data/lib/sentdm/models/channels_state.rb +89 -0
  63. data/lib/sentdm/models/compliance_attachment_template.rb +36 -0
  64. data/lib/sentdm/models/compliance_requirement.rb +112 -0
  65. data/lib/sentdm/models/compliance_requirements.rb +98 -0
  66. data/lib/sentdm/models/compliance_retrieve_requirements_params.rb +52 -0
  67. data/lib/sentdm/models/compliance_setup_step.rb +78 -0
  68. data/lib/sentdm/models/contact_message_summary.rb +3 -34
  69. data/lib/sentdm/models/contacts_list.rb +26 -0
  70. data/lib/sentdm/models/conversation_messages_list.rb +3 -430
  71. data/lib/sentdm/models/entity_type.rb +18 -0
  72. data/lib/sentdm/models/inbound_media.rb +53 -0
  73. data/lib/sentdm/models/inbound_message_event_payload.rb +3 -53
  74. data/lib/sentdm/models/link_event.rb +79 -0
  75. data/lib/sentdm/models/link_event_payload.rb +211 -0
  76. data/lib/sentdm/models/message.rb +168 -0
  77. data/lib/sentdm/models/message_activities.rb +34 -0
  78. data/lib/sentdm/models/message_activity.rb +105 -0
  79. data/lib/sentdm/models/message_body.rb +79 -0
  80. data/lib/sentdm/models/message_button.rb +33 -0
  81. data/lib/sentdm/models/message_cancel_params.rb +32 -0
  82. data/lib/sentdm/models/message_channel_options.rb +43 -0
  83. data/lib/sentdm/models/message_event_payload.rb +3 -2
  84. data/lib/sentdm/models/message_header_media.rb +31 -0
  85. data/lib/sentdm/models/message_media.rb +74 -0
  86. data/lib/sentdm/models/message_recipient.rb +46 -0
  87. data/lib/sentdm/models/message_send_params.rb +6 -90
  88. data/lib/sentdm/models/message_send_response.rb +3 -95
  89. data/lib/sentdm/models/message_send_result.rb +55 -0
  90. data/lib/sentdm/models/message_status_event.rb +54 -0
  91. data/lib/sentdm/models/mms_market.rb +48 -0
  92. data/lib/sentdm/models/number_lookup_result.rb +63 -0
  93. data/lib/sentdm/models/pagination_cursors.rb +27 -0
  94. data/lib/sentdm/models/pagination_meta.rb +3 -27
  95. data/lib/sentdm/models/profile_completion_accepted.rb +20 -0
  96. data/lib/sentdm/models/profile_completion_result.rb +31 -0
  97. data/lib/sentdm/models/profile_detail.rb +6 -408
  98. data/lib/sentdm/models/profiles/brand_campaign.rb +3 -15
  99. data/lib/sentdm/models/profiles_list.rb +26 -0
  100. data/lib/sentdm/models/sender_profile.rb +138 -0
  101. data/lib/sentdm/models/sender_profile_billing.rb +21 -0
  102. data/lib/sentdm/models/sender_profile_billing_request.rb +33 -0
  103. data/lib/sentdm/models/sender_profile_channels.rb +90 -0
  104. data/lib/sentdm/models/sender_profile_create_params.rb +116 -0
  105. data/lib/sentdm/models/sender_profile_delete_params.rb +20 -0
  106. data/lib/sentdm/models/sender_profile_list_params.rb +30 -0
  107. data/lib/sentdm/models/sender_profile_rcs.rb +209 -0
  108. data/lib/sentdm/models/sender_profile_retrieve_params.rb +20 -0
  109. data/lib/sentdm/models/sender_profile_sms.rb +106 -0
  110. data/lib/sentdm/models/sender_profile_update_params.rb +71 -0
  111. data/lib/sentdm/models/sender_profile_whatsapp.rb +61 -0
  112. data/lib/sentdm/models/sender_profiles_list.rb +26 -0
  113. data/lib/sentdm/models/tcr_brand_identity_status.rb +17 -0
  114. data/lib/sentdm/models/tcr_brand_status.rb +16 -0
  115. data/lib/sentdm/models/tcr_campaign_status.rb +16 -0
  116. data/lib/sentdm/models/template_body.rb +3 -70
  117. data/lib/sentdm/models/template_create_params.rb +11 -1
  118. data/lib/sentdm/models/template_header.rb +3 -37
  119. data/lib/sentdm/models/template_header_location.rb +38 -0
  120. data/lib/sentdm/models/template_media_item.rb +34 -0
  121. data/lib/sentdm/models/template_mms_body_content.rb +49 -0
  122. data/lib/sentdm/models/template_ref.rb +51 -0
  123. data/lib/sentdm/models/template_variable.rb +3 -64
  124. data/lib/sentdm/models/template_variable_props.rb +65 -0
  125. data/lib/sentdm/models/templates_list.rb +26 -0
  126. data/lib/sentdm/models/users_list.rb +26 -0
  127. data/lib/sentdm/models/voice/call.rb +3 -54
  128. data/lib/sentdm/models/voice/call_leg.rb +58 -0
  129. data/lib/sentdm/models/webhook_create_params.rb +3 -25
  130. data/lib/sentdm/models/webhook_delivery.rb +160 -0
  131. data/lib/sentdm/models/webhook_event_types_list.rb +26 -0
  132. data/lib/sentdm/models/webhook_events_list.rb +26 -0
  133. data/lib/sentdm/models/webhook_response.rb +3 -28
  134. data/lib/sentdm/models/webhook_secret.rb +15 -0
  135. data/lib/sentdm/models/webhook_sender_profile.rb +29 -0
  136. data/lib/sentdm/models/webhook_sender_profile_config.rb +27 -0
  137. data/lib/sentdm/models/webhook_test.rb +21 -0
  138. data/lib/sentdm/models/webhook_update_params.rb +3 -25
  139. data/lib/sentdm/models/webhooks_list.rb +26 -0
  140. data/lib/sentdm/models.rb +188 -0
  141. data/lib/sentdm/resources/channels/rcs.rb +177 -0
  142. data/lib/sentdm/resources/channels/sms.rb +417 -0
  143. data/lib/sentdm/resources/channels/whatsapp.rb +106 -0
  144. data/lib/sentdm/resources/channels.rb +162 -0
  145. data/lib/sentdm/resources/compliance.rb +127 -0
  146. data/lib/sentdm/resources/conversations.rb +4 -4
  147. data/lib/sentdm/resources/me.rb +2 -2
  148. data/lib/sentdm/resources/messages.rb +73 -7
  149. data/lib/sentdm/resources/numbers.rb +2 -2
  150. data/lib/sentdm/resources/profiles.rb +4 -4
  151. data/lib/sentdm/resources/sender_profiles.rb +463 -0
  152. data/lib/sentdm/resources/templates.rb +5 -3
  153. data/lib/sentdm/resources/users.rb +2 -2
  154. data/lib/sentdm/resources/webhooks.rb +10 -10
  155. data/lib/sentdm/version.rb +1 -1
  156. data/lib/sentdm.rb +120 -11
  157. data/rbi/sentdm/client.rbi +64 -0
  158. data/rbi/sentdm/internal/sender_profiles_page.rbi +122 -0
  159. data/rbi/sentdm/models/account.rbi +242 -0
  160. data/rbi/sentdm/models/account_channels.rbi +66 -0
  161. data/rbi/sentdm/models/account_profile.rbi +116 -0
  162. data/rbi/sentdm/models/account_rcs_channel.rbi +45 -0
  163. data/rbi/sentdm/models/account_sms_channel.rbi +45 -0
  164. data/rbi/sentdm/models/account_whatsapp_channel.rbi +58 -0
  165. data/rbi/sentdm/models/api_response_of_account.rbi +78 -0
  166. data/rbi/sentdm/models/{webhook_rotate_secret_response.rbi → api_response_of_cancelled_message.rbi} +6 -41
  167. data/rbi/sentdm/models/api_response_of_channels_state.rbi +78 -0
  168. data/rbi/sentdm/models/api_response_of_compliance_requirements.rbi +81 -0
  169. data/rbi/sentdm/models/api_response_of_contacts_list.rbi +74 -0
  170. data/rbi/sentdm/models/api_response_of_message.rbi +84 -0
  171. data/rbi/sentdm/models/api_response_of_message_activities.rbi +77 -0
  172. data/rbi/sentdm/models/{webhook_test_response.rbi → api_response_of_number_lookup_result.rbi} +9 -43
  173. data/rbi/sentdm/models/api_response_of_profile_completion_accepted.rbi +83 -0
  174. data/rbi/sentdm/models/{profile_complete_response.rbi → api_response_of_profile_completion_result.rbi} +6 -52
  175. data/rbi/sentdm/models/api_response_of_profiles_list.rbi +74 -0
  176. data/rbi/sentdm/models/api_response_of_sender_profile.rbi +90 -0
  177. data/rbi/sentdm/models/api_response_of_sender_profiles_list.rbi +77 -0
  178. data/rbi/sentdm/models/api_response_of_templates_list.rbi +74 -0
  179. data/rbi/sentdm/models/api_response_of_users_list.rbi +74 -0
  180. data/rbi/sentdm/models/api_response_of_webhook_event_types_list.rbi +79 -0
  181. data/rbi/sentdm/models/api_response_of_webhook_events_list.rbi +77 -0
  182. data/rbi/sentdm/models/api_response_of_webhook_secret.rbi +74 -0
  183. data/rbi/sentdm/models/api_response_of_webhook_test.rbi +74 -0
  184. data/rbi/sentdm/models/api_response_of_webhooks_list.rbi +74 -0
  185. data/rbi/sentdm/models/billing_contact.rbi +49 -0
  186. data/rbi/sentdm/models/brand_business.rbi +115 -0
  187. data/rbi/sentdm/models/brand_business_info.rbi +3 -49
  188. data/rbi/sentdm/models/brand_compliance.rbi +108 -0
  189. data/rbi/sentdm/models/brand_contact.rbi +78 -0
  190. data/rbi/sentdm/models/brand_with_kyc.rbi +167 -0
  191. data/rbi/sentdm/models/cancelled_message.rbi +37 -0
  192. data/rbi/sentdm/models/channel_event_payload.rbi +4 -204
  193. data/rbi/sentdm/models/channel_list_params.rbi +38 -0
  194. data/rbi/sentdm/models/channel_score.rbi +56 -0
  195. data/rbi/sentdm/models/channels/api_response_of_list_of_sms_market.rbi +76 -0
  196. data/rbi/sentdm/models/channels/api_response_of_rcs_agent.rbi +103 -0
  197. data/rbi/sentdm/models/channels/api_response_of_sms_market.rbi +93 -0
  198. data/rbi/sentdm/models/channels/api_response_of_whatsapp_channel.rbi +85 -0
  199. data/rbi/sentdm/models/channels/market_compliance.rbi +770 -0
  200. data/rbi/sentdm/models/channels/rc_create_params.rbi +397 -0
  201. data/rbi/sentdm/models/channels/rcs_address.rbi +62 -0
  202. data/rbi/sentdm/models/channels/rcs_agent.rbi +320 -0
  203. data/rbi/sentdm/models/channels/sms_create_params.rbi +291 -0
  204. data/rbi/sentdm/models/channels/sms_list_params.rbi +40 -0
  205. data/rbi/sentdm/models/channels/sms_market.rbi +247 -0
  206. data/rbi/sentdm/models/channels/sms_number.rbi +60 -0
  207. data/rbi/sentdm/models/channels/sms_number_request.rbi +48 -0
  208. data/rbi/sentdm/models/channels/sms_retrieve_params.rbi +56 -0
  209. data/rbi/sentdm/models/channels/sms_update_params.rbi +93 -0
  210. data/rbi/sentdm/models/channels/supplied_compliance.rbi +140 -0
  211. data/rbi/sentdm/models/channels/supplied_document.rbi +57 -0
  212. data/rbi/sentdm/models/channels/whatsapp_channel.rbi +172 -0
  213. data/rbi/sentdm/models/channels/whatsapp_create_params.rbi +104 -0
  214. data/rbi/sentdm/models/channels_state.rbi +151 -0
  215. data/rbi/sentdm/models/compliance_attachment_template.rbi +56 -0
  216. data/rbi/sentdm/models/compliance_requirement.rbi +149 -0
  217. data/rbi/sentdm/models/compliance_requirements.rbi +165 -0
  218. data/rbi/sentdm/models/compliance_retrieve_requirements_params.rbi +79 -0
  219. data/rbi/sentdm/models/compliance_setup_step.rbi +115 -0
  220. data/rbi/sentdm/models/contact_message_summary.rbi +4 -69
  221. data/rbi/sentdm/models/contacts_list.rbi +50 -0
  222. data/rbi/sentdm/models/conversation_messages_list.rbi +4 -669
  223. data/rbi/sentdm/models/entity_type.rbi +23 -0
  224. data/rbi/sentdm/models/inbound_media.rbi +76 -0
  225. data/rbi/sentdm/models/inbound_message_event_payload.rbi +3 -85
  226. data/rbi/sentdm/models/link_event.rbi +128 -0
  227. data/rbi/sentdm/models/link_event_payload.rbi +279 -0
  228. data/rbi/sentdm/models/message.rbi +214 -0
  229. data/rbi/sentdm/models/message_activities.rbi +63 -0
  230. data/rbi/sentdm/models/message_activity.rbi +145 -0
  231. data/rbi/sentdm/models/message_body.rbi +104 -0
  232. data/rbi/sentdm/models/message_button.rbi +52 -0
  233. data/rbi/sentdm/models/message_cancel_params.rbi +59 -0
  234. data/rbi/sentdm/models/message_channel_options.rbi +65 -0
  235. data/rbi/sentdm/models/message_event_payload.rbi +4 -2
  236. data/rbi/sentdm/models/message_header_media.rbi +44 -0
  237. data/rbi/sentdm/models/message_media.rbi +95 -0
  238. data/rbi/sentdm/models/message_recipient.rbi +70 -0
  239. data/rbi/sentdm/models/message_send_params.rbi +7 -155
  240. data/rbi/sentdm/models/message_send_response.rbi +4 -163
  241. data/rbi/sentdm/models/message_send_result.rbi +85 -0
  242. data/rbi/sentdm/models/message_status_event.rbi +70 -0
  243. data/rbi/sentdm/models/mms_market.rbi +66 -0
  244. data/rbi/sentdm/models/number_lookup_result.rbi +89 -0
  245. data/rbi/sentdm/models/pagination_cursors.rbi +42 -0
  246. data/rbi/sentdm/models/pagination_meta.rbi +4 -43
  247. data/rbi/sentdm/models/profile_completion_accepted.rbi +33 -0
  248. data/rbi/sentdm/models/profile_completion_result.rbi +43 -0
  249. data/rbi/sentdm/models/profile_detail.rbi +8 -621
  250. data/rbi/sentdm/models/profiles/brand_campaign.rbi +3 -45
  251. data/rbi/sentdm/models/profiles_list.rbi +50 -0
  252. data/rbi/sentdm/models/sender_profile.rbi +204 -0
  253. data/rbi/sentdm/models/sender_profile_billing.rbi +34 -0
  254. data/rbi/sentdm/models/sender_profile_billing_request.rbi +46 -0
  255. data/rbi/sentdm/models/sender_profile_channels.rbi +163 -0
  256. data/rbi/sentdm/models/sender_profile_create_params.rbi +190 -0
  257. data/rbi/sentdm/models/sender_profile_delete_params.rbi +35 -0
  258. data/rbi/sentdm/models/sender_profile_list_params.rbi +57 -0
  259. data/rbi/sentdm/models/sender_profile_rcs.rbi +211 -0
  260. data/rbi/sentdm/models/sender_profile_retrieve_params.rbi +35 -0
  261. data/rbi/sentdm/models/sender_profile_sms.rbi +156 -0
  262. data/rbi/sentdm/models/sender_profile_update_params.rbi +96 -0
  263. data/rbi/sentdm/models/sender_profile_whatsapp.rbi +83 -0
  264. data/rbi/sentdm/models/sender_profiles_list.rbi +54 -0
  265. data/rbi/sentdm/models/tcr_brand_identity_status.rbi +27 -0
  266. data/rbi/sentdm/models/tcr_brand_status.rbi +20 -0
  267. data/rbi/sentdm/models/tcr_campaign_status.rbi +23 -0
  268. data/rbi/sentdm/models/template_body.rbi +6 -114
  269. data/rbi/sentdm/models/template_create_params.rbi +12 -0
  270. data/rbi/sentdm/models/template_header.rbi +4 -53
  271. data/rbi/sentdm/models/template_header_location.rbi +47 -0
  272. data/rbi/sentdm/models/template_media_item.rbi +51 -0
  273. data/rbi/sentdm/models/template_mms_body_content.rbi +73 -0
  274. data/rbi/sentdm/models/template_ref.rbi +79 -0
  275. data/rbi/sentdm/models/template_variable.rbi +4 -80
  276. data/rbi/sentdm/models/template_variable_props.rbi +81 -0
  277. data/rbi/sentdm/models/templates_list.rbi +50 -0
  278. data/rbi/sentdm/models/users_list.rbi +50 -0
  279. data/rbi/sentdm/models/voice/call.rbi +3 -86
  280. data/rbi/sentdm/models/voice/call_leg.rbi +90 -0
  281. data/rbi/sentdm/models/webhook_create_params.rbi +4 -49
  282. data/rbi/sentdm/models/webhook_delivery.rbi +211 -0
  283. data/rbi/sentdm/models/webhook_event_types_list.rbi +54 -0
  284. data/rbi/sentdm/models/webhook_events_list.rbi +52 -0
  285. data/rbi/sentdm/models/webhook_response.rbi +4 -50
  286. data/rbi/sentdm/models/webhook_secret.rbi +24 -0
  287. data/rbi/sentdm/models/webhook_sender_profile.rbi +46 -0
  288. data/rbi/sentdm/models/webhook_sender_profile_config.rbi +44 -0
  289. data/rbi/sentdm/models/webhook_test.rbi +32 -0
  290. data/rbi/sentdm/models/webhook_update_params.rbi +4 -49
  291. data/rbi/sentdm/models/webhooks_list.rbi +50 -0
  292. data/rbi/sentdm/models.rbi +197 -0
  293. data/rbi/sentdm/resources/channels/rcs.rbi +208 -0
  294. data/rbi/sentdm/resources/channels/sms.rbi +437 -0
  295. data/rbi/sentdm/resources/channels/whatsapp.rbi +108 -0
  296. data/rbi/sentdm/resources/channels.rbi +149 -0
  297. data/rbi/sentdm/resources/compliance.rbi +121 -0
  298. data/rbi/sentdm/resources/conversations.rbi +2 -10
  299. data/rbi/sentdm/resources/me.rbi +1 -1
  300. data/rbi/sentdm/resources/messages.rbi +66 -8
  301. data/rbi/sentdm/resources/numbers.rbi +1 -1
  302. data/rbi/sentdm/resources/profiles.rbi +2 -2
  303. data/rbi/sentdm/resources/sender_profiles.rbi +461 -0
  304. data/rbi/sentdm/resources/templates.rbi +7 -2
  305. data/rbi/sentdm/resources/users.rbi +1 -1
  306. data/rbi/sentdm/resources/webhooks.rbi +6 -12
  307. data/sig/sentdm/client.rbs +4 -0
  308. data/sig/sentdm/internal/sender_profiles_page.rbs +80 -0
  309. data/sig/sentdm/models/account.rbs +111 -0
  310. data/sig/sentdm/models/account_channels.rbs +38 -0
  311. data/sig/sentdm/models/account_profile.rbs +68 -0
  312. data/sig/sentdm/models/account_rcs_channel.rbs +17 -0
  313. data/sig/sentdm/models/account_sms_channel.rbs +17 -0
  314. data/sig/sentdm/models/account_whatsapp_channel.rbs +28 -0
  315. data/sig/sentdm/models/api_response_of_account.rbs +39 -0
  316. data/sig/sentdm/models/api_response_of_cancelled_message.rbs +39 -0
  317. data/sig/sentdm/models/api_response_of_channels_state.rbs +39 -0
  318. data/sig/sentdm/models/api_response_of_compliance_requirements.rbs +39 -0
  319. data/sig/sentdm/models/api_response_of_contacts_list.rbs +39 -0
  320. data/sig/sentdm/models/api_response_of_message.rbs +39 -0
  321. data/sig/sentdm/models/api_response_of_message_activities.rbs +39 -0
  322. data/sig/sentdm/models/api_response_of_number_lookup_result.rbs +39 -0
  323. data/sig/sentdm/models/api_response_of_profile_completion_accepted.rbs +39 -0
  324. data/sig/sentdm/models/api_response_of_profile_completion_result.rbs +39 -0
  325. data/sig/sentdm/models/api_response_of_profiles_list.rbs +39 -0
  326. data/sig/sentdm/models/api_response_of_sender_profile.rbs +39 -0
  327. data/sig/sentdm/models/api_response_of_sender_profiles_list.rbs +39 -0
  328. data/sig/sentdm/models/api_response_of_templates_list.rbs +39 -0
  329. data/sig/sentdm/models/api_response_of_users_list.rbs +39 -0
  330. data/sig/sentdm/models/api_response_of_webhook_event_types_list.rbs +39 -0
  331. data/sig/sentdm/models/api_response_of_webhook_events_list.rbs +39 -0
  332. data/sig/sentdm/models/api_response_of_webhook_secret.rbs +39 -0
  333. data/sig/sentdm/models/api_response_of_webhook_test.rbs +39 -0
  334. data/sig/sentdm/models/api_response_of_webhooks_list.rbs +39 -0
  335. data/sig/sentdm/models/billing_contact.rbs +30 -0
  336. data/sig/sentdm/models/brand_business.rbs +70 -0
  337. data/sig/sentdm/models/brand_business_info.rbs +4 -23
  338. data/sig/sentdm/models/brand_compliance.rbs +56 -0
  339. data/sig/sentdm/models/brand_contact.rbs +47 -0
  340. data/sig/sentdm/models/brand_with_kyc.rbs +93 -0
  341. data/sig/sentdm/models/cancelled_message.rbs +15 -0
  342. data/sig/sentdm/models/channel_event_payload.rbs +4 -56
  343. data/sig/sentdm/models/channel_list_params.rbs +25 -0
  344. data/sig/sentdm/models/channel_score.rbs +32 -0
  345. data/sig/sentdm/models/channels/api_response_of_list_of_sms_market.rbs +41 -0
  346. data/sig/sentdm/models/channels/api_response_of_rcs_agent.rbs +41 -0
  347. data/sig/sentdm/models/channels/api_response_of_sms_market.rbs +41 -0
  348. data/sig/sentdm/models/channels/api_response_of_whatsapp_channel.rbs +43 -0
  349. data/sig/sentdm/models/channels/market_compliance.rbs +338 -0
  350. data/sig/sentdm/models/channels/rc_create_params.rbs +242 -0
  351. data/sig/sentdm/models/channels/rcs_address.rbs +42 -0
  352. data/sig/sentdm/models/channels/rcs_agent.rbs +181 -0
  353. data/sig/sentdm/models/channels/sms_create_params.rbs +116 -0
  354. data/sig/sentdm/models/channels/sms_list_params.rbs +27 -0
  355. data/sig/sentdm/models/channels/sms_market.rbs +85 -0
  356. data/sig/sentdm/models/channels/sms_number.rbs +28 -0
  357. data/sig/sentdm/models/channels/sms_number_request.rbs +17 -0
  358. data/sig/sentdm/models/channels/sms_retrieve_params.rbs +36 -0
  359. data/sig/sentdm/models/channels/sms_update_params.rbs +63 -0
  360. data/sig/sentdm/models/channels/supplied_compliance.rbs +32 -0
  361. data/sig/sentdm/models/channels/supplied_document.rbs +30 -0
  362. data/sig/sentdm/models/channels/whatsapp_channel.rbs +78 -0
  363. data/sig/sentdm/models/channels/whatsapp_create_params.rbs +56 -0
  364. data/sig/sentdm/models/channels_state.rbs +55 -0
  365. data/sig/sentdm/models/compliance_attachment_template.rbs +26 -0
  366. data/sig/sentdm/models/compliance_requirement.rbs +76 -0
  367. data/sig/sentdm/models/compliance_requirements.rbs +66 -0
  368. data/sig/sentdm/models/compliance_retrieve_requirements_params.rbs +43 -0
  369. data/sig/sentdm/models/compliance_setup_step.rbs +62 -0
  370. data/sig/sentdm/models/contact_message_summary.rbs +6 -35
  371. data/sig/sentdm/models/contacts_list.rbs +31 -0
  372. data/sig/sentdm/models/conversation_messages_list.rbs +5 -312
  373. data/sig/sentdm/models/entity_type.rbs +22 -0
  374. data/sig/sentdm/models/inbound_media.rbs +35 -0
  375. data/sig/sentdm/models/inbound_message_event_payload.rbs +4 -36
  376. data/sig/sentdm/models/link_event.rbs +44 -0
  377. data/sig/sentdm/models/link_event_payload.rbs +106 -0
  378. data/sig/sentdm/models/message.rbs +130 -0
  379. data/sig/sentdm/models/message_activities.rbs +38 -0
  380. data/sig/sentdm/models/message_activity.rbs +66 -0
  381. data/sig/sentdm/models/message_body.rbs +52 -0
  382. data/sig/sentdm/models/message_button.rbs +34 -0
  383. data/sig/sentdm/models/message_cancel_params.rbs +38 -0
  384. data/sig/sentdm/models/message_channel_options.rbs +26 -0
  385. data/sig/sentdm/models/message_header_media.rbs +19 -0
  386. data/sig/sentdm/models/message_media.rbs +40 -0
  387. data/sig/sentdm/models/message_recipient.rbs +34 -0
  388. data/sig/sentdm/models/message_send_params.rbs +8 -54
  389. data/sig/sentdm/models/message_send_response.rbs +4 -77
  390. data/sig/sentdm/models/message_send_result.rbs +45 -0
  391. data/sig/sentdm/models/message_status_event.rbs +40 -0
  392. data/sig/sentdm/models/mms_market.rbs +35 -0
  393. data/sig/sentdm/models/number_lookup_result.rbs +64 -0
  394. data/sig/sentdm/models/pagination_cursors.rbs +15 -0
  395. data/sig/sentdm/models/pagination_meta.rbs +4 -16
  396. data/sig/sentdm/models/profile_completion_accepted.rbs +15 -0
  397. data/sig/sentdm/models/profile_completion_result.rbs +19 -0
  398. data/sig/sentdm/models/profile_detail.rbs +8 -315
  399. data/sig/sentdm/models/profiles/brand_campaign.rbs +4 -16
  400. data/sig/sentdm/models/profiles_list.rbs +31 -0
  401. data/sig/sentdm/models/sender_profile.rbs +76 -0
  402. data/sig/sentdm/models/sender_profile_billing.rbs +15 -0
  403. data/sig/sentdm/models/sender_profile_billing_request.rbs +15 -0
  404. data/sig/sentdm/models/sender_profile_channels.rbs +30 -0
  405. data/sig/sentdm/models/sender_profile_create_params.rbs +78 -0
  406. data/sig/sentdm/models/sender_profile_delete_params.rbs +20 -0
  407. data/sig/sentdm/models/sender_profile_list_params.rbs +32 -0
  408. data/sig/sentdm/models/sender_profile_rcs.rbs +150 -0
  409. data/sig/sentdm/models/sender_profile_retrieve_params.rbs +20 -0
  410. data/sig/sentdm/models/sender_profile_sms.rbs +40 -0
  411. data/sig/sentdm/models/sender_profile_update_params.rbs +62 -0
  412. data/sig/sentdm/models/sender_profile_whatsapp.rbs +16 -0
  413. data/sig/sentdm/models/sender_profiles_list.rbs +31 -0
  414. data/sig/sentdm/models/tcr_brand_identity_status.rbs +17 -0
  415. data/sig/sentdm/models/tcr_brand_status.rbs +15 -0
  416. data/sig/sentdm/models/tcr_campaign_status.rbs +15 -0
  417. data/sig/sentdm/models/template_body.rbs +4 -43
  418. data/sig/sentdm/models/template_create_params.rbs +5 -0
  419. data/sig/sentdm/models/template_header.rbs +4 -31
  420. data/sig/sentdm/models/template_header_location.rbs +30 -0
  421. data/sig/sentdm/models/template_media_item.rbs +17 -0
  422. data/sig/sentdm/models/template_mms_body_content.rbs +28 -0
  423. data/sig/sentdm/models/template_ref.rbs +26 -0
  424. data/sig/sentdm/models/template_variable.rbs +4 -51
  425. data/sig/sentdm/models/template_variable_props.rbs +50 -0
  426. data/sig/sentdm/models/templates_list.rbs +29 -0
  427. data/sig/sentdm/models/users_list.rbs +31 -0
  428. data/sig/sentdm/models/voice/call.rbs +4 -49
  429. data/sig/sentdm/models/voice/call_leg.rbs +50 -0
  430. data/sig/sentdm/models/webhook_create_params.rbs +4 -28
  431. data/sig/sentdm/models/webhook_delivery.rbs +99 -0
  432. data/sig/sentdm/models/webhook_event_types_list.rbs +31 -0
  433. data/sig/sentdm/models/webhook_events_list.rbs +31 -0
  434. data/sig/sentdm/models/webhook_response.rbs +4 -28
  435. data/sig/sentdm/models/webhook_secret.rbs +15 -0
  436. data/sig/sentdm/models/webhook_sender_profile.rbs +27 -0
  437. data/sig/sentdm/models/webhook_sender_profile_config.rbs +27 -0
  438. data/sig/sentdm/models/webhook_test.rbs +19 -0
  439. data/sig/sentdm/models/webhook_update_params.rbs +4 -28
  440. data/sig/sentdm/models/webhooks_list.rbs +31 -0
  441. data/sig/sentdm/models.rbs +188 -0
  442. data/sig/sentdm/resources/channels/rcs.rbs +41 -0
  443. data/sig/sentdm/resources/channels/sms.rbs +44 -0
  444. data/sig/sentdm/resources/channels/whatsapp.rbs +18 -0
  445. data/sig/sentdm/resources/channels.rbs +11 -0
  446. data/sig/sentdm/resources/compliance.rbs +15 -0
  447. data/sig/sentdm/resources/conversations.rbs +2 -2
  448. data/sig/sentdm/resources/me.rbs +1 -1
  449. data/sig/sentdm/resources/messages.rbs +12 -4
  450. data/sig/sentdm/resources/numbers.rbs +1 -1
  451. data/sig/sentdm/resources/profiles.rbs +2 -2
  452. data/sig/sentdm/resources/sender_profiles.rbs +44 -0
  453. data/sig/sentdm/resources/templates.rbs +1 -0
  454. data/sig/sentdm/resources/users.rbs +1 -1
  455. data/sig/sentdm/resources/webhooks.rbs +6 -6
  456. metadata +362 -35
  457. data/lib/sentdm/models/me_retrieve_response.rb +0 -409
  458. data/lib/sentdm/models/message_retrieve_activities_response.rb +0 -175
  459. data/lib/sentdm/models/message_retrieve_status_response.rb +0 -477
  460. data/lib/sentdm/models/number_lookup_response.rb +0 -104
  461. data/lib/sentdm/models/profile_complete_response.rb +0 -74
  462. data/lib/sentdm/models/profile_list_response.rb +0 -65
  463. data/lib/sentdm/models/user_list_response.rb +0 -65
  464. data/lib/sentdm/models/webhook_list_event_types_response.rb +0 -65
  465. data/lib/sentdm/models/webhook_list_events_response.rb +0 -445
  466. data/rbi/sentdm/models/me_retrieve_response.rbi +0 -705
  467. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +0 -319
  468. data/rbi/sentdm/models/message_retrieve_status_response.rbi +0 -765
  469. data/rbi/sentdm/models/number_lookup_response.rbi +0 -166
  470. data/rbi/sentdm/models/profile_list_response.rbi +0 -128
  471. data/rbi/sentdm/models/user_list_response.rbi +0 -128
  472. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +0 -142
  473. data/rbi/sentdm/models/webhook_list_events_response.rbi +0 -647
  474. data/sig/sentdm/models/me_retrieve_response.rbs +0 -306
  475. data/sig/sentdm/models/message_retrieve_activities_response.rbs +0 -137
  476. data/sig/sentdm/models/message_retrieve_status_response.rbs +0 -341
  477. data/sig/sentdm/models/number_lookup_response.rbs +0 -100
  478. data/sig/sentdm/models/profile_complete_response.rbs +0 -55
  479. data/sig/sentdm/models/profile_list_response.rbs +0 -67
  480. data/sig/sentdm/models/user_list_response.rbs +0 -67
  481. data/sig/sentdm/models/webhook_list_event_types_response.rbs +0 -67
  482. data/sig/sentdm/models/webhook_list_events_response.rbs +0 -243
  483. data/sig/sentdm/models/webhook_rotate_secret_response.rbs +0 -51
  484. data/sig/sentdm/models/webhook_test_response.rbs +0 -55
@@ -93,7 +93,8 @@ module Sentdm
93
93
  sig { returns(T.nilable(String)) }
94
94
  attr_accessor :template_name
95
95
 
96
- # When the message reached MessageStatus, in UTC (yyyy-MM-ddTHH:mm:ssZ).
96
+ # When the message reached the status this event reports, in UTC
97
+ # (yyyy-MM-ddTHH:mm:ssZ).
97
98
  sig { returns(T.nilable(String)) }
98
99
  attr_reader :updated_at
99
100
 
@@ -169,7 +170,8 @@ module Sentdm
169
170
  # Name of the template the message was sent from. Omitted when the message wasn't
170
171
  # template-based.
171
172
  template_name: nil,
172
- # When the message reached MessageStatus, in UTC (yyyy-MM-ddTHH:mm:ssZ).
173
+ # When the message reached the status this event reports, in UTC
174
+ # (yyyy-MM-ddTHH:mm:ssZ).
173
175
  updated_at: nil
174
176
  )
175
177
  end
@@ -0,0 +1,44 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageHeaderMedia < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::MessageHeaderMedia, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # "image", "video" or "document" — taken from the header's media variable.
12
+ sig { returns(T.nilable(String)) }
13
+ attr_reader :type
14
+
15
+ sig { params(type: String).void }
16
+ attr_writer :type
17
+
18
+ # The https URL the caller supplied for this send. Never the template's stored
19
+ # props.sample, which is Meta's expiring header_handle rather than what was
20
+ # delivered.
21
+ sig { returns(T.nilable(String)) }
22
+ attr_reader :url
23
+
24
+ sig { params(url: String).void }
25
+ attr_writer :url
26
+
27
+ # The media asset that rode a message's header, recorded as sent.
28
+ sig { params(type: String, url: String).returns(T.attached_class) }
29
+ def self.new(
30
+ # "image", "video" or "document" — taken from the header's media variable.
31
+ type: nil,
32
+ # The https URL the caller supplied for this send. Never the template's stored
33
+ # props.sample, which is Meta's expiring header_handle rather than what was
34
+ # delivered.
35
+ url: nil
36
+ )
37
+ end
38
+
39
+ sig { override.returns({ type: String, url: String }) }
40
+ def to_hash
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,95 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageMedia < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Sentdm::MessageMedia, Sentdm::Internal::AnyHash) }
8
+
9
+ # One of MmsMediaTypes when the content type is known. Advisory — a reader should
10
+ # trust the fetched object's own Content-Type.
11
+ sig { returns(T.nilable(String)) }
12
+ attr_accessor :media_type
13
+
14
+ # Content type as the provider declared it. Null when it declared none.
15
+ sig { returns(T.nilable(String)) }
16
+ attr_accessor :mime_type
17
+
18
+ # Size as the provider declared it. Never measured here — nothing downloads the
19
+ # file.
20
+ sig { returns(T.nilable(Integer)) }
21
+ attr_accessor :size_bytes
22
+
23
+ # Inbound only: the SHA-256 the provider declared alongside the attachment, when
24
+ # it declared one. Relayed to the customer so they can verify what they fetch
25
+ # matches what the carrier said it sent. It is the only integrity signal available
26
+ # on an attachment nobody here has read.
27
+ sig { returns(T.nilable(String)) }
28
+ attr_accessor :source_hash_sha256
29
+
30
+ # Where the file lives. Outbound: the URL the customer gave us and the carrier
31
+ # fetched. Inbound: the URL the carrier hosts it at, relayed unchanged.
32
+ sig { returns(T.nilable(String)) }
33
+ attr_accessor :url
34
+
35
+ # One attachment on a message, in either direction — and in both, a URL somebody
36
+ # else hosts.
37
+ #
38
+ # Outbound: the customer supplied a public URL and we handed it to the carrier.
39
+ # Inbound: the carrier hosts the file and we record where. sent.dm never holds the
40
+ # bytes, so there is no key, no expiry bookkeeping and nothing minted per read —
41
+ # what is stored is what is served.
42
+ #
43
+ # An inbound link expires on the carrier's own schedule and is unauthenticated.
44
+ # That is the customer's to manage, and it is documented where they will see it
45
+ # rather than only here — a recipient who needs an attachment to outlive that
46
+ # window copies it on receipt.
47
+ #
48
+ # Storing a presigned URL is the specific mistake this shape still avoids:
49
+ # M260826130000 and M260826140000 exist because RCS assets were stored as signed
50
+ # URLs and went stale. Nothing here is signed.
51
+ sig do
52
+ params(
53
+ media_type: T.nilable(String),
54
+ mime_type: T.nilable(String),
55
+ size_bytes: T.nilable(Integer),
56
+ source_hash_sha256: T.nilable(String),
57
+ url: T.nilable(String)
58
+ ).returns(T.attached_class)
59
+ end
60
+ def self.new(
61
+ # One of MmsMediaTypes when the content type is known. Advisory — a reader should
62
+ # trust the fetched object's own Content-Type.
63
+ media_type: nil,
64
+ # Content type as the provider declared it. Null when it declared none.
65
+ mime_type: nil,
66
+ # Size as the provider declared it. Never measured here — nothing downloads the
67
+ # file.
68
+ size_bytes: nil,
69
+ # Inbound only: the SHA-256 the provider declared alongside the attachment, when
70
+ # it declared one. Relayed to the customer so they can verify what they fetch
71
+ # matches what the carrier said it sent. It is the only integrity signal available
72
+ # on an attachment nobody here has read.
73
+ source_hash_sha256: nil,
74
+ # Where the file lives. Outbound: the URL the customer gave us and the carrier
75
+ # fetched. Inbound: the URL the carrier hosts it at, relayed unchanged.
76
+ url: nil
77
+ )
78
+ end
79
+
80
+ sig do
81
+ override.returns(
82
+ {
83
+ media_type: T.nilable(String),
84
+ mime_type: T.nilable(String),
85
+ size_bytes: T.nilable(Integer),
86
+ source_hash_sha256: T.nilable(String),
87
+ url: T.nilable(String)
88
+ }
89
+ )
90
+ end
91
+ def to_hash
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,70 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageRecipient < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::MessageRecipient, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # Resolved template body for this recipient's channel, or null when the channel is
12
+ # auto-detected.
13
+ sig { returns(T.nilable(String)) }
14
+ attr_accessor :body
15
+
16
+ # Channel this message will be sent on — sms, whatsapp — or null to auto-detect.
17
+ sig { returns(T.nilable(String)) }
18
+ attr_accessor :channel
19
+
20
+ # Identifier for tracking this recipient's message.
21
+ sig { returns(T.nilable(String)) }
22
+ attr_reader :message_id
23
+
24
+ sig { params(message_id: String).void }
25
+ attr_writer :message_id
26
+
27
+ # Phone number in E.164 format.
28
+ sig { returns(T.nilable(String)) }
29
+ attr_reader :to
30
+
31
+ sig { params(to: String).void }
32
+ attr_writer :to
33
+
34
+ # What one recipient of a send got, as the API reports it.
35
+ sig do
36
+ params(
37
+ body: T.nilable(String),
38
+ channel: T.nilable(String),
39
+ message_id: String,
40
+ to: String
41
+ ).returns(T.attached_class)
42
+ end
43
+ def self.new(
44
+ # Resolved template body for this recipient's channel, or null when the channel is
45
+ # auto-detected.
46
+ body: nil,
47
+ # Channel this message will be sent on — sms, whatsapp — or null to auto-detect.
48
+ channel: nil,
49
+ # Identifier for tracking this recipient's message.
50
+ message_id: nil,
51
+ # Phone number in E.164 format.
52
+ to: nil
53
+ )
54
+ end
55
+
56
+ sig do
57
+ override.returns(
58
+ {
59
+ body: T.nilable(String),
60
+ channel: T.nilable(String),
61
+ message_id: String,
62
+ to: String
63
+ }
64
+ )
65
+ end
66
+ def to_hash
67
+ end
68
+ end
69
+ end
70
+ end
@@ -42,9 +42,7 @@ module Sentdm
42
42
  # code BUSINESS_029 and reported on GET /v3/messages and the status webhook.
43
43
  sig do
44
44
  returns(
45
- T.nilable(
46
- T::Hash[Symbol, T::Array[Sentdm::MessageSendParams::Channel]]
47
- )
45
+ T.nilable(T::Hash[Symbol, T::Array[Sentdm::MessageChannelOptions]])
48
46
  )
49
47
  end
50
48
  attr_accessor :channels
@@ -97,14 +95,10 @@ module Sentdm
97
95
 
98
96
  # SDK-style template reference: resolve by ID or by name, with optional
99
97
  # parameters.
100
- sig { returns(T.nilable(Sentdm::MessageSendParams::Template)) }
98
+ sig { returns(T.nilable(Sentdm::TemplateRef)) }
101
99
  attr_reader :template
102
100
 
103
- sig do
104
- params(
105
- template: T.nilable(Sentdm::MessageSendParams::Template::OrHash)
106
- ).void
107
- end
101
+ sig { params(template: T.nilable(Sentdm::TemplateRef::OrHash)).void }
108
102
  attr_writer :template
109
103
 
110
104
  # Plain-text (free-form) message body. Provide either Template or this.
@@ -135,16 +129,13 @@ module Sentdm
135
129
  channel: T.nilable(T::Array[String]),
136
130
  channels:
137
131
  T.nilable(
138
- T::Hash[
139
- Symbol,
140
- T::Array[Sentdm::MessageSendParams::Channel::OrHash]
141
- ]
132
+ T::Hash[Symbol, T::Array[Sentdm::MessageChannelOptions::OrHash]]
142
133
  ),
143
134
  media_urls: T.nilable(T::Array[String]),
144
135
  sandbox: T::Boolean,
145
136
  scheduled_at: T.nilable(Time),
146
137
  subject: T.nilable(String),
147
- template: T.nilable(Sentdm::MessageSendParams::Template::OrHash),
138
+ template: T.nilable(Sentdm::TemplateRef::OrHash),
148
139
  text: T.nilable(String),
149
140
  to: T::Array[String],
150
141
  idempotency_key: String,
@@ -235,13 +226,13 @@ module Sentdm
235
226
  channel: T.nilable(T::Array[String]),
236
227
  channels:
237
228
  T.nilable(
238
- T::Hash[Symbol, T::Array[Sentdm::MessageSendParams::Channel]]
229
+ T::Hash[Symbol, T::Array[Sentdm::MessageChannelOptions]]
239
230
  ),
240
231
  media_urls: T.nilable(T::Array[String]),
241
232
  sandbox: T::Boolean,
242
233
  scheduled_at: T.nilable(Time),
243
234
  subject: T.nilable(String),
244
- template: T.nilable(Sentdm::MessageSendParams::Template),
235
+ template: T.nilable(Sentdm::TemplateRef),
245
236
  text: T.nilable(String),
246
237
  to: T::Array[String],
247
238
  idempotency_key: String,
@@ -252,145 +243,6 @@ module Sentdm
252
243
  end
253
244
  def to_hash
254
245
  end
255
-
256
- class Channel < Sentdm::Internal::Type::BaseModel
257
- OrHash =
258
- T.type_alias do
259
- T.any(Sentdm::MessageSendParams::Channel, Sentdm::Internal::AnyHash)
260
- end
261
-
262
- # Recipient country this entry is meant for (ISO 3166-1 alpha-2, e.g. US).
263
- # Optional. Accepted and stored, not acted on yet.
264
- sig { returns(T.nilable(String)) }
265
- attr_accessor :country
266
-
267
- # Sender numbers in E.164. Each must be an active sender on your account for this
268
- # channel. That is account state rather than request shape, so it is decided per
269
- # message: the request is accepted with 202 and a message naming an unusable
270
- # number is recorded BLOCKED with error code BUSINESS_029.
271
- sig { returns(T.nilable(T::Array[String])) }
272
- attr_accessor :from
273
-
274
- # How to pick a number from From, e.g. sticky or geo. Optional. Accepted and
275
- # stored, not acted on yet.
276
- sig { returns(T.nilable(String)) }
277
- attr_accessor :strategy
278
-
279
- # One entry of a channel's list in Channels, e.g. {"country": "US", "from":
280
- # ["+15559990002", "+15559990003"], "strategy": "sticky"}.
281
- sig do
282
- params(
283
- country: T.nilable(String),
284
- from: T.nilable(T::Array[String]),
285
- strategy: T.nilable(String)
286
- ).returns(T.attached_class)
287
- end
288
- def self.new(
289
- # Recipient country this entry is meant for (ISO 3166-1 alpha-2, e.g. US).
290
- # Optional. Accepted and stored, not acted on yet.
291
- country: nil,
292
- # Sender numbers in E.164. Each must be an active sender on your account for this
293
- # channel. That is account state rather than request shape, so it is decided per
294
- # message: the request is accepted with 202 and a message naming an unusable
295
- # number is recorded BLOCKED with error code BUSINESS_029.
296
- from: nil,
297
- # How to pick a number from From, e.g. sticky or geo. Optional. Accepted and
298
- # stored, not acted on yet.
299
- strategy: nil
300
- )
301
- end
302
-
303
- sig do
304
- override.returns(
305
- {
306
- country: T.nilable(String),
307
- from: T.nilable(T::Array[String]),
308
- strategy: T.nilable(String)
309
- }
310
- )
311
- end
312
- def to_hash
313
- end
314
- end
315
-
316
- class Template < Sentdm::Internal::Type::BaseModel
317
- OrHash =
318
- T.type_alias do
319
- T.any(
320
- Sentdm::MessageSendParams::Template,
321
- Sentdm::Internal::AnyHash
322
- )
323
- end
324
-
325
- # Template ID (mutually exclusive with name)
326
- sig { returns(T.nilable(String)) }
327
- attr_accessor :id
328
-
329
- # Template name (mutually exclusive with id)
330
- sig { returns(T.nilable(String)) }
331
- attr_accessor :name
332
-
333
- # Template variable parameters for personalization, keyed by variable name.
334
- #
335
- # Every variable the template declares is required; GET /v3/templates/{id} lists
336
- # them. Supplying a key the template does not declare is ignored.
337
- #
338
- # Media headers. A template whose header is an image (designed in WhatsApp Manager
339
- # and imported into Sent) declares a reserved header_image key. Its value is a
340
- # publicly reachable https URL that Meta fetches at send time — Sent does not host
341
- # the asset, and the sample approved with the template is not reused. The key is
342
- # derived from the header's media type, so header_video and header_document follow
343
- # the same shape when those formats ship.
344
- #
345
- # "parameters": { "header_image": "https://cdn.example.com/banner.jpg", "name":
346
- # "John Doe" }
347
- sig { returns(T.nilable(T::Hash[Symbol, String])) }
348
- attr_accessor :parameters
349
-
350
- # SDK-style template reference: resolve by ID or by name, with optional
351
- # parameters.
352
- sig do
353
- params(
354
- id: T.nilable(String),
355
- name: T.nilable(String),
356
- parameters: T.nilable(T::Hash[Symbol, String])
357
- ).returns(T.attached_class)
358
- end
359
- def self.new(
360
- # Template ID (mutually exclusive with name)
361
- id: nil,
362
- # Template name (mutually exclusive with id)
363
- name: nil,
364
- # Template variable parameters for personalization, keyed by variable name.
365
- #
366
- # Every variable the template declares is required; GET /v3/templates/{id} lists
367
- # them. Supplying a key the template does not declare is ignored.
368
- #
369
- # Media headers. A template whose header is an image (designed in WhatsApp Manager
370
- # and imported into Sent) declares a reserved header_image key. Its value is a
371
- # publicly reachable https URL that Meta fetches at send time — Sent does not host
372
- # the asset, and the sample approved with the template is not reused. The key is
373
- # derived from the header's media type, so header_video and header_document follow
374
- # the same shape when those formats ship.
375
- #
376
- # "parameters": { "header_image": "https://cdn.example.com/banner.jpg", "name":
377
- # "John Doe" }
378
- parameters: nil
379
- )
380
- end
381
-
382
- sig do
383
- override.returns(
384
- {
385
- id: T.nilable(String),
386
- name: T.nilable(String),
387
- parameters: T.nilable(T::Hash[Symbol, String])
388
- }
389
- )
390
- end
391
- def to_hash
392
- end
393
- end
394
246
  end
395
247
  end
396
248
  end
@@ -20,12 +20,10 @@ module Sentdm
20
20
  # The shape of an immediate send: it never has a scheduled_at key. A send that
21
21
  # carried scheduled_at is a ScheduledSendMessageResponse, and the endpoint decides
22
22
  # which of the two to answer with. From always returns this type.
23
- sig { returns(T.nilable(Sentdm::MessageSendResponse::Data)) }
23
+ sig { returns(T.nilable(Sentdm::MessageSendResult)) }
24
24
  attr_reader :data
25
25
 
26
- sig do
27
- params(data: T.nilable(Sentdm::MessageSendResponse::Data::OrHash)).void
28
- end
26
+ sig { params(data: T.nilable(Sentdm::MessageSendResult::OrHash)).void }
29
27
  attr_writer :data
30
28
 
31
29
  # Error information
@@ -52,7 +50,7 @@ module Sentdm
52
50
  # Standard API response envelope for all v3 endpoints
53
51
  sig do
54
52
  params(
55
- data: T.nilable(Sentdm::MessageSendResponse::Data::OrHash),
53
+ data: T.nilable(Sentdm::MessageSendResult::OrHash),
56
54
  error: T.nilable(Sentdm::ErrorDetail::OrHash),
57
55
  meta: Sentdm::APIMeta::OrHash,
58
56
  success: T::Boolean
@@ -84,7 +82,7 @@ module Sentdm
84
82
  sig do
85
83
  override.returns(
86
84
  {
87
- data: T.nilable(Sentdm::MessageSendResponse::Data),
85
+ data: T.nilable(Sentdm::MessageSendResult),
88
86
  error: T.nilable(Sentdm::ErrorDetail),
89
87
  meta: Sentdm::APIMeta,
90
88
  success: T::Boolean
@@ -93,163 +91,6 @@ module Sentdm
93
91
  end
94
92
  def to_hash
95
93
  end
96
-
97
- class Data < Sentdm::Internal::Type::BaseModel
98
- OrHash =
99
- T.type_alias do
100
- T.any(Sentdm::MessageSendResponse::Data, Sentdm::Internal::AnyHash)
101
- end
102
-
103
- sig do
104
- returns(
105
- T.nilable(T::Array[Sentdm::MessageSendResponse::Data::Recipient])
106
- )
107
- end
108
- attr_reader :recipients
109
-
110
- sig do
111
- params(
112
- recipients:
113
- T::Array[Sentdm::MessageSendResponse::Data::Recipient::OrHash]
114
- ).void
115
- end
116
- attr_writer :recipients
117
-
118
- # QUEUED: the batch is accepted. A request that carried scheduled_at is QUEUED
119
- # here too; each message moves to SCHEDULED once it is held, as GET
120
- # /v3/messages/{id} and the message.scheduled webhook report.
121
- sig { returns(T.nilable(String)) }
122
- attr_reader :status
123
-
124
- sig { params(status: String).void }
125
- attr_writer :status
126
-
127
- sig { returns(T.nilable(String)) }
128
- attr_reader :template_id
129
-
130
- sig { params(template_id: String).void }
131
- attr_writer :template_id
132
-
133
- sig { returns(T.nilable(String)) }
134
- attr_reader :template_name
135
-
136
- sig { params(template_name: String).void }
137
- attr_writer :template_name
138
-
139
- # The result of a multi-recipient send.
140
- #
141
- # Declared here rather than in the service layer. POST /v3/messages used to
142
- # publish MessageSendResult — a type in Common.Services.Messaging.Contracts — so
143
- # the public contract was whatever the send service happened to return, and
144
- # changing that service for an internal reason changed the API. The service keeps
145
- # its result; this is what a caller sees, and the mapping between them is a
146
- # decision the endpoint makes.
147
- #
148
- # The shape of an immediate send: it never has a scheduled_at key. A send that
149
- # carried scheduled_at is a ScheduledSendMessageResponse, and the endpoint decides
150
- # which of the two to answer with. From always returns this type.
151
- sig do
152
- params(
153
- recipients:
154
- T::Array[Sentdm::MessageSendResponse::Data::Recipient::OrHash],
155
- status: String,
156
- template_id: String,
157
- template_name: String
158
- ).returns(T.attached_class)
159
- end
160
- def self.new(
161
- recipients: nil,
162
- # QUEUED: the batch is accepted. A request that carried scheduled_at is QUEUED
163
- # here too; each message moves to SCHEDULED once it is held, as GET
164
- # /v3/messages/{id} and the message.scheduled webhook report.
165
- status: nil,
166
- template_id: nil,
167
- template_name: nil
168
- )
169
- end
170
-
171
- sig do
172
- override.returns(
173
- {
174
- recipients:
175
- T::Array[Sentdm::MessageSendResponse::Data::Recipient],
176
- status: String,
177
- template_id: String,
178
- template_name: String
179
- }
180
- )
181
- end
182
- def to_hash
183
- end
184
-
185
- class Recipient < Sentdm::Internal::Type::BaseModel
186
- OrHash =
187
- T.type_alias do
188
- T.any(
189
- Sentdm::MessageSendResponse::Data::Recipient,
190
- Sentdm::Internal::AnyHash
191
- )
192
- end
193
-
194
- # Resolved template body for this recipient's channel, or null when the channel is
195
- # auto-detected.
196
- sig { returns(T.nilable(String)) }
197
- attr_accessor :body
198
-
199
- # Channel this message will be sent on — sms, whatsapp — or null to auto-detect.
200
- sig { returns(T.nilable(String)) }
201
- attr_accessor :channel
202
-
203
- # Identifier for tracking this recipient's message.
204
- sig { returns(T.nilable(String)) }
205
- attr_reader :message_id
206
-
207
- sig { params(message_id: String).void }
208
- attr_writer :message_id
209
-
210
- # Phone number in E.164 format.
211
- sig { returns(T.nilable(String)) }
212
- attr_reader :to
213
-
214
- sig { params(to: String).void }
215
- attr_writer :to
216
-
217
- # What one recipient of a send got, as the API reports it.
218
- sig do
219
- params(
220
- body: T.nilable(String),
221
- channel: T.nilable(String),
222
- message_id: String,
223
- to: String
224
- ).returns(T.attached_class)
225
- end
226
- def self.new(
227
- # Resolved template body for this recipient's channel, or null when the channel is
228
- # auto-detected.
229
- body: nil,
230
- # Channel this message will be sent on — sms, whatsapp — or null to auto-detect.
231
- channel: nil,
232
- # Identifier for tracking this recipient's message.
233
- message_id: nil,
234
- # Phone number in E.164 format.
235
- to: nil
236
- )
237
- end
238
-
239
- sig do
240
- override.returns(
241
- {
242
- body: T.nilable(String),
243
- channel: T.nilable(String),
244
- message_id: String,
245
- to: String
246
- }
247
- )
248
- end
249
- def to_hash
250
- end
251
- end
252
- end
253
94
  end
254
95
  end
255
96
  end