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
@@ -9,16 +9,10 @@ module Sentdm
9
9
  end
10
10
 
11
11
  # The messages on this page.
12
- sig do
13
- returns(T.nilable(T::Array[Sentdm::ConversationMessagesList::Message]))
14
- end
12
+ sig { returns(T.nilable(T::Array[Sentdm::Message])) }
15
13
  attr_reader :messages
16
14
 
17
- sig do
18
- params(
19
- messages: T::Array[Sentdm::ConversationMessagesList::Message::OrHash]
20
- ).void
21
- end
15
+ sig { params(messages: T::Array[Sentdm::Message::OrHash]).void }
22
16
  attr_writer :messages
23
17
 
24
18
  # Pagination metadata for list responses
@@ -31,7 +25,7 @@ module Sentdm
31
25
  # A paginated list of messages — used by both conversation read endpoints.
32
26
  sig do
33
27
  params(
34
- messages: T::Array[Sentdm::ConversationMessagesList::Message::OrHash],
28
+ messages: T::Array[Sentdm::Message::OrHash],
35
29
  pagination: Sentdm::PaginationMeta::OrHash
36
30
  ).returns(T.attached_class)
37
31
  end
@@ -46,672 +40,13 @@ module Sentdm
46
40
  sig do
47
41
  override.returns(
48
42
  {
49
- messages: T::Array[Sentdm::ConversationMessagesList::Message],
43
+ messages: T::Array[Sentdm::Message],
50
44
  pagination: Sentdm::PaginationMeta
51
45
  }
52
46
  )
53
47
  end
54
48
  def to_hash
55
49
  end
56
-
57
- class Message < Sentdm::Internal::Type::BaseModel
58
- OrHash =
59
- T.type_alias do
60
- T.any(
61
- Sentdm::ConversationMessagesList::Message,
62
- Sentdm::Internal::AnyHash
63
- )
64
- end
65
-
66
- sig { returns(T.nilable(String)) }
67
- attr_reader :id
68
-
69
- sig { params(id: String).void }
70
- attr_writer :id
71
-
72
- sig { returns(T.nilable(Float)) }
73
- attr_accessor :active_contact_price
74
-
75
- sig { returns(T.nilable(String)) }
76
- attr_reader :channel
77
-
78
- sig { params(channel: String).void }
79
- attr_writer :channel
80
-
81
- sig { returns(T.nilable(String)) }
82
- attr_reader :contact_id
83
-
84
- sig { params(contact_id: String).void }
85
- attr_writer :contact_id
86
-
87
- sig { returns(T.nilable(Time)) }
88
- attr_reader :created_at
89
-
90
- sig { params(created_at: Time).void }
91
- attr_writer :created_at
92
-
93
- sig { returns(T.nilable(String)) }
94
- attr_reader :customer_id
95
-
96
- sig { params(customer_id: String).void }
97
- attr_writer :customer_id
98
-
99
- sig { returns(T.nilable(String)) }
100
- attr_reader :direction
101
-
102
- sig { params(direction: String).void }
103
- attr_writer :direction
104
-
105
- sig do
106
- returns(
107
- T.nilable(
108
- T::Array[Sentdm::ConversationMessagesList::Message::Event]
109
- )
110
- )
111
- end
112
- attr_accessor :events
113
-
114
- # Structured message body format for database storage. Preserves channel-specific
115
- # components (header, header media, body, footer, buttons, MMS subject and media).
116
- #
117
- # Persisted as the messageBody jsonb column on Messages. Every write path goes
118
- # through MessageUtils.MessageBodyJsonOptions, which writes nulls, so the envelope
119
- # shape is stable regardless of channel or status. Anything that rebuilds this
120
- # object field by field — the four IMessageBodyStrategy implementations and
121
- # MessageUtils.BuildSegmentBody — has to carry every member, or that member is
122
- # silently dropped on whichever path forgot it.
123
- sig do
124
- returns(
125
- T.nilable(Sentdm::ConversationMessagesList::Message::MessageBody)
126
- )
127
- end
128
- attr_reader :message_body
129
-
130
- sig do
131
- params(
132
- message_body:
133
- T.nilable(
134
- Sentdm::ConversationMessagesList::Message::MessageBody::OrHash
135
- )
136
- ).void
137
- end
138
- attr_writer :message_body
139
-
140
- sig { returns(T.nilable(String)) }
141
- attr_reader :phone
142
-
143
- sig { params(phone: String).void }
144
- attr_writer :phone
145
-
146
- sig { returns(T.nilable(String)) }
147
- attr_reader :phone_international
148
-
149
- sig { params(phone_international: String).void }
150
- attr_writer :phone_international
151
-
152
- sig { returns(T.nilable(Float)) }
153
- attr_accessor :price
154
-
155
- # A human-readable sentence for reason_code, for example "Insufficient balance".
156
- # Omitted whenever reason_code is.
157
- sig { returns(T.nilable(String)) }
158
- attr_accessor :reason
159
-
160
- # Why the message is at its current status, as a stable platform code such as
161
- # DELIVERY_007, BUSINESS_003 or DELIVERY_003. Present when the current status is
162
- # FAILED, FILTERED or BLOCKED and the lifecycle was loaded; omitted otherwise.
163
- # Switch on this rather than on reason: the code is stable, the wording may be
164
- # improved. It is the platform's classification of the outcome, never a carrier or
165
- # vendor code.
166
- sig { returns(T.nilable(String)) }
167
- attr_accessor :reason_code
168
-
169
- sig { returns(T.nilable(String)) }
170
- attr_reader :region_code
171
-
172
- sig { params(region_code: String).void }
173
- attr_writer :region_code
174
-
175
- sig { returns(T.nilable(String)) }
176
- attr_reader :status
177
-
178
- sig { params(status: String).void }
179
- attr_writer :status
180
-
181
- sig { returns(T.nilable(String)) }
182
- attr_accessor :template_category
183
-
184
- sig { returns(T.nilable(String)) }
185
- attr_accessor :template_id
186
-
187
- sig { returns(T.nilable(String)) }
188
- attr_accessor :template_name
189
-
190
- # Message response for v3 API — same shape as v2 with snake_case JSON conventions.
191
- #
192
- # The shape of a message that was sent immediately: it never has a scheduled_at
193
- # key. A message that is or was held for a later instant is a
194
- # ScheduledMessageResponse, and the endpoint decides which of the two to answer
195
- # with. From always returns this type.
196
- sig do
197
- params(
198
- id: String,
199
- active_contact_price: T.nilable(Float),
200
- channel: String,
201
- contact_id: String,
202
- created_at: Time,
203
- customer_id: String,
204
- direction: String,
205
- events:
206
- T.nilable(
207
- T::Array[
208
- Sentdm::ConversationMessagesList::Message::Event::OrHash
209
- ]
210
- ),
211
- message_body:
212
- T.nilable(
213
- Sentdm::ConversationMessagesList::Message::MessageBody::OrHash
214
- ),
215
- phone: String,
216
- phone_international: String,
217
- price: T.nilable(Float),
218
- reason: T.nilable(String),
219
- reason_code: T.nilable(String),
220
- region_code: String,
221
- status: String,
222
- template_category: T.nilable(String),
223
- template_id: T.nilable(String),
224
- template_name: T.nilable(String)
225
- ).returns(T.attached_class)
226
- end
227
- def self.new(
228
- id: nil,
229
- active_contact_price: nil,
230
- channel: nil,
231
- contact_id: nil,
232
- created_at: nil,
233
- customer_id: nil,
234
- direction: nil,
235
- events: nil,
236
- # Structured message body format for database storage. Preserves channel-specific
237
- # components (header, header media, body, footer, buttons, MMS subject and media).
238
- #
239
- # Persisted as the messageBody jsonb column on Messages. Every write path goes
240
- # through MessageUtils.MessageBodyJsonOptions, which writes nulls, so the envelope
241
- # shape is stable regardless of channel or status. Anything that rebuilds this
242
- # object field by field — the four IMessageBodyStrategy implementations and
243
- # MessageUtils.BuildSegmentBody — has to carry every member, or that member is
244
- # silently dropped on whichever path forgot it.
245
- message_body: nil,
246
- phone: nil,
247
- phone_international: nil,
248
- price: nil,
249
- # A human-readable sentence for reason_code, for example "Insufficient balance".
250
- # Omitted whenever reason_code is.
251
- reason: nil,
252
- # Why the message is at its current status, as a stable platform code such as
253
- # DELIVERY_007, BUSINESS_003 or DELIVERY_003. Present when the current status is
254
- # FAILED, FILTERED or BLOCKED and the lifecycle was loaded; omitted otherwise.
255
- # Switch on this rather than on reason: the code is stable, the wording may be
256
- # improved. It is the platform's classification of the outcome, never a carrier or
257
- # vendor code.
258
- reason_code: nil,
259
- region_code: nil,
260
- status: nil,
261
- template_category: nil,
262
- template_id: nil,
263
- template_name: nil
264
- )
265
- end
266
-
267
- sig do
268
- override.returns(
269
- {
270
- id: String,
271
- active_contact_price: T.nilable(Float),
272
- channel: String,
273
- contact_id: String,
274
- created_at: Time,
275
- customer_id: String,
276
- direction: String,
277
- events:
278
- T.nilable(
279
- T::Array[Sentdm::ConversationMessagesList::Message::Event]
280
- ),
281
- message_body:
282
- T.nilable(
283
- Sentdm::ConversationMessagesList::Message::MessageBody
284
- ),
285
- phone: String,
286
- phone_international: String,
287
- price: T.nilable(Float),
288
- reason: T.nilable(String),
289
- reason_code: T.nilable(String),
290
- region_code: String,
291
- status: String,
292
- template_category: T.nilable(String),
293
- template_id: T.nilable(String),
294
- template_name: T.nilable(String)
295
- }
296
- )
297
- end
298
- def to_hash
299
- end
300
-
301
- class Event < Sentdm::Internal::Type::BaseModel
302
- OrHash =
303
- T.type_alias do
304
- T.any(
305
- Sentdm::ConversationMessagesList::Message::Event,
306
- Sentdm::Internal::AnyHash
307
- )
308
- end
309
-
310
- sig { returns(String) }
311
- attr_accessor :status
312
-
313
- sig { returns(Time) }
314
- attr_accessor :timestamp
315
-
316
- sig { returns(T.nilable(String)) }
317
- attr_accessor :description
318
-
319
- # A human-readable sentence for reason_code. Omitted whenever reason_code is.
320
- sig { returns(T.nilable(String)) }
321
- attr_accessor :reason
322
-
323
- # Why the message reached this status, as a stable platform code such as
324
- # DELIVERY_007. Present on FAILED, FILTERED and BLOCKED events; omitted on every
325
- # status that needs no explanation. Same wire name and vocabulary as on the
326
- # activities list and the webhook.
327
- sig { returns(T.nilable(String)) }
328
- attr_accessor :reason_code
329
-
330
- # Represents a status change event in a message's lifecycle (v3)
331
- sig do
332
- params(
333
- status: String,
334
- timestamp: Time,
335
- description: T.nilable(String),
336
- reason: T.nilable(String),
337
- reason_code: T.nilable(String)
338
- ).returns(T.attached_class)
339
- end
340
- def self.new(
341
- status:,
342
- timestamp:,
343
- description: nil,
344
- # A human-readable sentence for reason_code. Omitted whenever reason_code is.
345
- reason: nil,
346
- # Why the message reached this status, as a stable platform code such as
347
- # DELIVERY_007. Present on FAILED, FILTERED and BLOCKED events; omitted on every
348
- # status that needs no explanation. Same wire name and vocabulary as on the
349
- # activities list and the webhook.
350
- reason_code: nil
351
- )
352
- end
353
-
354
- sig do
355
- override.returns(
356
- {
357
- status: String,
358
- timestamp: Time,
359
- description: T.nilable(String),
360
- reason: T.nilable(String),
361
- reason_code: T.nilable(String)
362
- }
363
- )
364
- end
365
- def to_hash
366
- end
367
- end
368
-
369
- class MessageBody < Sentdm::Internal::Type::BaseModel
370
- OrHash =
371
- T.type_alias do
372
- T.any(
373
- Sentdm::ConversationMessagesList::Message::MessageBody,
374
- Sentdm::Internal::AnyHash
375
- )
376
- end
377
-
378
- sig do
379
- returns(
380
- T.nilable(
381
- T::Array[
382
- Sentdm::ConversationMessagesList::Message::MessageBody::Button
383
- ]
384
- )
385
- )
386
- end
387
- attr_accessor :buttons
388
-
389
- sig { returns(T.nilable(String)) }
390
- attr_reader :content
391
-
392
- sig { params(content: String).void }
393
- attr_writer :content
394
-
395
- sig { returns(T.nilable(String)) }
396
- attr_accessor :footer
397
-
398
- sig { returns(T.nilable(String)) }
399
- attr_accessor :header
400
-
401
- # The media asset that rode a message's header, recorded as sent.
402
- sig do
403
- returns(
404
- T.nilable(
405
- Sentdm::ConversationMessagesList::Message::MessageBody::HeaderMedia
406
- )
407
- )
408
- end
409
- attr_reader :header_media
410
-
411
- sig do
412
- params(
413
- header_media:
414
- T.nilable(
415
- Sentdm::ConversationMessagesList::Message::MessageBody::HeaderMedia::OrHash
416
- )
417
- ).void
418
- end
419
- attr_writer :header_media
420
-
421
- # MMS attachments, as the publicly fetchable URLs handed to the carrier. Null on
422
- # every other channel.
423
- #
424
- # Persisted rather than derived because a resend and a curfew release rebuild the
425
- # send from the stored row — MessageReplayCommandBuilder reads templateId and
426
- # templateVariables and nothing else — so media that lives only on the original
427
- # request would silently turn a replayed MMS into a text message.
428
- sig do
429
- returns(
430
- T.nilable(
431
- T::Array[
432
- Sentdm::ConversationMessagesList::Message::MessageBody::Media
433
- ]
434
- )
435
- )
436
- end
437
- attr_accessor :media
438
-
439
- # MMS subject line. Null on every other channel.
440
- sig { returns(T.nilable(String)) }
441
- attr_accessor :subject
442
-
443
- # Structured message body format for database storage. Preserves channel-specific
444
- # components (header, header media, body, footer, buttons, MMS subject and media).
445
- #
446
- # Persisted as the messageBody jsonb column on Messages. Every write path goes
447
- # through MessageUtils.MessageBodyJsonOptions, which writes nulls, so the envelope
448
- # shape is stable regardless of channel or status. Anything that rebuilds this
449
- # object field by field — the four IMessageBodyStrategy implementations and
450
- # MessageUtils.BuildSegmentBody — has to carry every member, or that member is
451
- # silently dropped on whichever path forgot it.
452
- sig do
453
- params(
454
- buttons:
455
- T.nilable(
456
- T::Array[
457
- Sentdm::ConversationMessagesList::Message::MessageBody::Button::OrHash
458
- ]
459
- ),
460
- content: String,
461
- footer: T.nilable(String),
462
- header: T.nilable(String),
463
- header_media:
464
- T.nilable(
465
- Sentdm::ConversationMessagesList::Message::MessageBody::HeaderMedia::OrHash
466
- ),
467
- media:
468
- T.nilable(
469
- T::Array[
470
- Sentdm::ConversationMessagesList::Message::MessageBody::Media::OrHash
471
- ]
472
- ),
473
- subject: T.nilable(String)
474
- ).returns(T.attached_class)
475
- end
476
- def self.new(
477
- buttons: nil,
478
- content: nil,
479
- footer: nil,
480
- header: nil,
481
- # The media asset that rode a message's header, recorded as sent.
482
- header_media: nil,
483
- # MMS attachments, as the publicly fetchable URLs handed to the carrier. Null on
484
- # every other channel.
485
- #
486
- # Persisted rather than derived because a resend and a curfew release rebuild the
487
- # send from the stored row — MessageReplayCommandBuilder reads templateId and
488
- # templateVariables and nothing else — so media that lives only on the original
489
- # request would silently turn a replayed MMS into a text message.
490
- media: nil,
491
- # MMS subject line. Null on every other channel.
492
- subject: nil
493
- )
494
- end
495
-
496
- sig do
497
- override.returns(
498
- {
499
- buttons:
500
- T.nilable(
501
- T::Array[
502
- Sentdm::ConversationMessagesList::Message::MessageBody::Button
503
- ]
504
- ),
505
- content: String,
506
- footer: T.nilable(String),
507
- header: T.nilable(String),
508
- header_media:
509
- T.nilable(
510
- Sentdm::ConversationMessagesList::Message::MessageBody::HeaderMedia
511
- ),
512
- media:
513
- T.nilable(
514
- T::Array[
515
- Sentdm::ConversationMessagesList::Message::MessageBody::Media
516
- ]
517
- ),
518
- subject: T.nilable(String)
519
- }
520
- )
521
- end
522
- def to_hash
523
- end
524
-
525
- class Button < Sentdm::Internal::Type::BaseModel
526
- OrHash =
527
- T.type_alias do
528
- T.any(
529
- Sentdm::ConversationMessagesList::Message::MessageBody::Button,
530
- Sentdm::Internal::AnyHash
531
- )
532
- end
533
-
534
- sig { returns(T.nilable(String)) }
535
- attr_accessor :postback_data
536
-
537
- sig { returns(T.nilable(String)) }
538
- attr_accessor :text
539
-
540
- sig { returns(T.nilable(String)) }
541
- attr_reader :type
542
-
543
- sig { params(type: String).void }
544
- attr_writer :type
545
-
546
- sig { returns(T.nilable(String)) }
547
- attr_reader :value
548
-
549
- sig { params(value: String).void }
550
- attr_writer :value
551
-
552
- sig do
553
- params(
554
- postback_data: T.nilable(String),
555
- text: T.nilable(String),
556
- type: String,
557
- value: String
558
- ).returns(T.attached_class)
559
- end
560
- def self.new(postback_data: nil, text: nil, type: nil, value: nil)
561
- end
562
-
563
- sig do
564
- override.returns(
565
- {
566
- postback_data: T.nilable(String),
567
- text: T.nilable(String),
568
- type: String,
569
- value: String
570
- }
571
- )
572
- end
573
- def to_hash
574
- end
575
- end
576
-
577
- class HeaderMedia < Sentdm::Internal::Type::BaseModel
578
- OrHash =
579
- T.type_alias do
580
- T.any(
581
- Sentdm::ConversationMessagesList::Message::MessageBody::HeaderMedia,
582
- Sentdm::Internal::AnyHash
583
- )
584
- end
585
-
586
- # "image", "video" or "document" — taken from the header's media variable.
587
- sig { returns(T.nilable(String)) }
588
- attr_reader :type
589
-
590
- sig { params(type: String).void }
591
- attr_writer :type
592
-
593
- # The https URL the caller supplied for this send. Never the template's stored
594
- # props.sample, which is Meta's expiring header_handle rather than what was
595
- # delivered.
596
- sig { returns(T.nilable(String)) }
597
- attr_reader :url
598
-
599
- sig { params(url: String).void }
600
- attr_writer :url
601
-
602
- # The media asset that rode a message's header, recorded as sent.
603
- sig { params(type: String, url: String).returns(T.attached_class) }
604
- def self.new(
605
- # "image", "video" or "document" — taken from the header's media variable.
606
- type: nil,
607
- # The https URL the caller supplied for this send. Never the template's stored
608
- # props.sample, which is Meta's expiring header_handle rather than what was
609
- # delivered.
610
- url: nil
611
- )
612
- end
613
-
614
- sig { override.returns({ type: String, url: String }) }
615
- def to_hash
616
- end
617
- end
618
-
619
- class Media < Sentdm::Internal::Type::BaseModel
620
- OrHash =
621
- T.type_alias do
622
- T.any(
623
- Sentdm::ConversationMessagesList::Message::MessageBody::Media,
624
- Sentdm::Internal::AnyHash
625
- )
626
- end
627
-
628
- # One of MmsMediaTypes when the content type is known. Advisory — a reader should
629
- # trust the fetched object's own Content-Type.
630
- sig { returns(T.nilable(String)) }
631
- attr_accessor :media_type
632
-
633
- # Content type as the provider declared it. Null when it declared none.
634
- sig { returns(T.nilable(String)) }
635
- attr_accessor :mime_type
636
-
637
- # Size as the provider declared it. Never measured here — nothing downloads the
638
- # file.
639
- sig { returns(T.nilable(Integer)) }
640
- attr_accessor :size_bytes
641
-
642
- # Inbound only: the SHA-256 the provider declared alongside the attachment, when
643
- # it declared one. Relayed to the customer so they can verify what they fetch
644
- # matches what the carrier said it sent. It is the only integrity signal available
645
- # on an attachment nobody here has read.
646
- sig { returns(T.nilable(String)) }
647
- attr_accessor :source_hash_sha256
648
-
649
- # Where the file lives. Outbound: the URL the customer gave us and the carrier
650
- # fetched. Inbound: the URL the carrier hosts it at, relayed unchanged.
651
- sig { returns(T.nilable(String)) }
652
- attr_accessor :url
653
-
654
- # One attachment on a message, in either direction — and in both, a URL somebody
655
- # else hosts.
656
- #
657
- # Outbound: the customer supplied a public URL and we handed it to the carrier.
658
- # Inbound: the carrier hosts the file and we record where. sent.dm never holds the
659
- # bytes, so there is no key, no expiry bookkeeping and nothing minted per read —
660
- # what is stored is what is served.
661
- #
662
- # An inbound link expires on the carrier's own schedule and is unauthenticated.
663
- # That is the customer's to manage, and it is documented where they will see it
664
- # rather than only here — a recipient who needs an attachment to outlive that
665
- # window copies it on receipt.
666
- #
667
- # Storing a presigned URL is the specific mistake this shape still avoids:
668
- # M260826130000 and M260826140000 exist because RCS assets were stored as signed
669
- # URLs and went stale. Nothing here is signed.
670
- sig do
671
- params(
672
- media_type: T.nilable(String),
673
- mime_type: T.nilable(String),
674
- size_bytes: T.nilable(Integer),
675
- source_hash_sha256: T.nilable(String),
676
- url: T.nilable(String)
677
- ).returns(T.attached_class)
678
- end
679
- def self.new(
680
- # One of MmsMediaTypes when the content type is known. Advisory — a reader should
681
- # trust the fetched object's own Content-Type.
682
- media_type: nil,
683
- # Content type as the provider declared it. Null when it declared none.
684
- mime_type: nil,
685
- # Size as the provider declared it. Never measured here — nothing downloads the
686
- # file.
687
- size_bytes: nil,
688
- # Inbound only: the SHA-256 the provider declared alongside the attachment, when
689
- # it declared one. Relayed to the customer so they can verify what they fetch
690
- # matches what the carrier said it sent. It is the only integrity signal available
691
- # on an attachment nobody here has read.
692
- source_hash_sha256: nil,
693
- # Where the file lives. Outbound: the URL the customer gave us and the carrier
694
- # fetched. Inbound: the URL the carrier hosts it at, relayed unchanged.
695
- url: nil
696
- )
697
- end
698
-
699
- sig do
700
- override.returns(
701
- {
702
- media_type: T.nilable(String),
703
- mime_type: T.nilable(String),
704
- size_bytes: T.nilable(Integer),
705
- source_hash_sha256: T.nilable(String),
706
- url: T.nilable(String)
707
- }
708
- )
709
- end
710
- def to_hash
711
- end
712
- end
713
- end
714
- end
715
50
  end
716
51
  end
717
52
  end