sentdm 0.45.0 → 0.47.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 (483) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -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 +148 -0
  54. data/lib/sentdm/models/channels/sms_number.rb +52 -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_campaign.rb +10 -0
  59. data/lib/sentdm/models/channels/supplied_compliance.rb +115 -0
  60. data/lib/sentdm/models/channels/supplied_document.rb +35 -0
  61. data/lib/sentdm/models/channels/whatsapp_channel.rb +109 -0
  62. data/lib/sentdm/models/channels/whatsapp_create_params.rb +65 -0
  63. data/lib/sentdm/models/channels_state.rb +89 -0
  64. data/lib/sentdm/models/compliance_attachment_template.rb +36 -0
  65. data/lib/sentdm/models/compliance_requirement.rb +112 -0
  66. data/lib/sentdm/models/compliance_requirements.rb +98 -0
  67. data/lib/sentdm/models/compliance_retrieve_requirements_params.rb +52 -0
  68. data/lib/sentdm/models/compliance_setup_step.rb +78 -0
  69. data/lib/sentdm/models/contact_message_summary.rb +3 -34
  70. data/lib/sentdm/models/contacts_list.rb +26 -0
  71. data/lib/sentdm/models/conversation_messages_list.rb +3 -430
  72. data/lib/sentdm/models/entity_type.rb +18 -0
  73. data/lib/sentdm/models/inbound_media.rb +53 -0
  74. data/lib/sentdm/models/inbound_message_event_payload.rb +3 -53
  75. data/lib/sentdm/models/link_event.rb +79 -0
  76. data/lib/sentdm/models/link_event_payload.rb +211 -0
  77. data/lib/sentdm/models/message.rb +168 -0
  78. data/lib/sentdm/models/message_activities.rb +34 -0
  79. data/lib/sentdm/models/message_activity.rb +105 -0
  80. data/lib/sentdm/models/message_body.rb +79 -0
  81. data/lib/sentdm/models/message_button.rb +33 -0
  82. data/lib/sentdm/models/message_cancel_params.rb +32 -0
  83. data/lib/sentdm/models/message_channel_options.rb +43 -0
  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 +14 -16
  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_header.rb +3 -37
  118. data/lib/sentdm/models/template_header_location.rb +38 -0
  119. data/lib/sentdm/models/template_media_item.rb +34 -0
  120. data/lib/sentdm/models/template_mms_body_content.rb +49 -0
  121. data/lib/sentdm/models/template_ref.rb +51 -0
  122. data/lib/sentdm/models/template_variable.rb +3 -64
  123. data/lib/sentdm/models/template_variable_props.rb +65 -0
  124. data/lib/sentdm/models/templates_list.rb +26 -0
  125. data/lib/sentdm/models/users_list.rb +26 -0
  126. data/lib/sentdm/models/voice/call.rb +7 -57
  127. data/lib/sentdm/models/voice/call_leg.rb +58 -0
  128. data/lib/sentdm/models/webhook_create_params.rb +3 -25
  129. data/lib/sentdm/models/webhook_delivery.rb +160 -0
  130. data/lib/sentdm/models/webhook_event_types_list.rb +26 -0
  131. data/lib/sentdm/models/webhook_events_list.rb +26 -0
  132. data/lib/sentdm/models/webhook_response.rb +3 -28
  133. data/lib/sentdm/models/webhook_secret.rb +15 -0
  134. data/lib/sentdm/models/webhook_sender_profile.rb +29 -0
  135. data/lib/sentdm/models/webhook_sender_profile_config.rb +27 -0
  136. data/lib/sentdm/models/webhook_test.rb +21 -0
  137. data/lib/sentdm/models/webhook_update_params.rb +3 -25
  138. data/lib/sentdm/models/webhooks_list.rb +26 -0
  139. data/lib/sentdm/models.rb +188 -0
  140. data/lib/sentdm/resources/channels/rcs.rb +177 -0
  141. data/lib/sentdm/resources/channels/sms.rb +420 -0
  142. data/lib/sentdm/resources/channels/whatsapp.rb +106 -0
  143. data/lib/sentdm/resources/channels.rb +162 -0
  144. data/lib/sentdm/resources/compliance.rb +127 -0
  145. data/lib/sentdm/resources/conversations.rb +4 -4
  146. data/lib/sentdm/resources/me.rb +2 -2
  147. data/lib/sentdm/resources/messages.rb +71 -6
  148. data/lib/sentdm/resources/numbers.rb +2 -2
  149. data/lib/sentdm/resources/profiles/campaigns.rb +4 -1
  150. data/lib/sentdm/resources/profiles.rb +4 -4
  151. data/lib/sentdm/resources/sender_profiles.rb +465 -0
  152. data/lib/sentdm/resources/users.rb +2 -2
  153. data/lib/sentdm/resources/voice/calls/participants.rb +5 -5
  154. data/lib/sentdm/resources/webhooks.rb +10 -10
  155. data/lib/sentdm/version.rb +1 -1
  156. data/lib/sentdm.rb +121 -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 +235 -0
  206. data/rbi/sentdm/models/channels/sms_number.rbi +74 -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_campaign.rbi +13 -0
  211. data/rbi/sentdm/models/channels/supplied_compliance.rbi +180 -0
  212. data/rbi/sentdm/models/channels/supplied_document.rbi +57 -0
  213. data/rbi/sentdm/models/channels/whatsapp_channel.rbi +172 -0
  214. data/rbi/sentdm/models/channels/whatsapp_create_params.rbi +104 -0
  215. data/rbi/sentdm/models/channels_state.rbi +151 -0
  216. data/rbi/sentdm/models/compliance_attachment_template.rbi +56 -0
  217. data/rbi/sentdm/models/compliance_requirement.rbi +149 -0
  218. data/rbi/sentdm/models/compliance_requirements.rbi +165 -0
  219. data/rbi/sentdm/models/compliance_retrieve_requirements_params.rbi +79 -0
  220. data/rbi/sentdm/models/compliance_setup_step.rbi +115 -0
  221. data/rbi/sentdm/models/contact_message_summary.rbi +4 -69
  222. data/rbi/sentdm/models/contacts_list.rbi +50 -0
  223. data/rbi/sentdm/models/conversation_messages_list.rbi +4 -669
  224. data/rbi/sentdm/models/entity_type.rbi +23 -0
  225. data/rbi/sentdm/models/inbound_media.rbi +76 -0
  226. data/rbi/sentdm/models/inbound_message_event_payload.rbi +3 -85
  227. data/rbi/sentdm/models/link_event.rbi +128 -0
  228. data/rbi/sentdm/models/link_event_payload.rbi +279 -0
  229. data/rbi/sentdm/models/message.rbi +214 -0
  230. data/rbi/sentdm/models/message_activities.rbi +63 -0
  231. data/rbi/sentdm/models/message_activity.rbi +145 -0
  232. data/rbi/sentdm/models/message_body.rbi +104 -0
  233. data/rbi/sentdm/models/message_button.rbi +52 -0
  234. data/rbi/sentdm/models/message_cancel_params.rbi +59 -0
  235. data/rbi/sentdm/models/message_channel_options.rbi +65 -0
  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 +18 -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_header.rbi +4 -53
  270. data/rbi/sentdm/models/template_header_location.rbi +47 -0
  271. data/rbi/sentdm/models/template_media_item.rbi +51 -0
  272. data/rbi/sentdm/models/template_mms_body_content.rbi +73 -0
  273. data/rbi/sentdm/models/template_ref.rbi +79 -0
  274. data/rbi/sentdm/models/template_variable.rbi +4 -80
  275. data/rbi/sentdm/models/template_variable_props.rbi +81 -0
  276. data/rbi/sentdm/models/templates_list.rbi +50 -0
  277. data/rbi/sentdm/models/users_list.rbi +50 -0
  278. data/rbi/sentdm/models/voice/call.rbi +11 -92
  279. data/rbi/sentdm/models/voice/call_leg.rbi +90 -0
  280. data/rbi/sentdm/models/webhook_create_params.rbi +4 -49
  281. data/rbi/sentdm/models/webhook_delivery.rbi +211 -0
  282. data/rbi/sentdm/models/webhook_event_types_list.rbi +54 -0
  283. data/rbi/sentdm/models/webhook_events_list.rbi +52 -0
  284. data/rbi/sentdm/models/webhook_response.rbi +4 -50
  285. data/rbi/sentdm/models/webhook_secret.rbi +24 -0
  286. data/rbi/sentdm/models/webhook_sender_profile.rbi +46 -0
  287. data/rbi/sentdm/models/webhook_sender_profile_config.rbi +44 -0
  288. data/rbi/sentdm/models/webhook_test.rbi +32 -0
  289. data/rbi/sentdm/models/webhook_update_params.rbi +4 -49
  290. data/rbi/sentdm/models/webhooks_list.rbi +50 -0
  291. data/rbi/sentdm/models.rbi +197 -0
  292. data/rbi/sentdm/resources/channels/rcs.rbi +208 -0
  293. data/rbi/sentdm/resources/channels/sms.rbi +440 -0
  294. data/rbi/sentdm/resources/channels/whatsapp.rbi +108 -0
  295. data/rbi/sentdm/resources/channels.rbi +149 -0
  296. data/rbi/sentdm/resources/compliance.rbi +121 -0
  297. data/rbi/sentdm/resources/conversations.rbi +2 -10
  298. data/rbi/sentdm/resources/me.rbi +1 -1
  299. data/rbi/sentdm/resources/messages.rbi +64 -7
  300. data/rbi/sentdm/resources/numbers.rbi +1 -1
  301. data/rbi/sentdm/resources/profiles/campaigns.rbi +4 -1
  302. data/rbi/sentdm/resources/profiles.rbi +2 -2
  303. data/rbi/sentdm/resources/sender_profiles.rbi +463 -0
  304. data/rbi/sentdm/resources/users.rbi +1 -1
  305. data/rbi/sentdm/resources/voice/calls/participants.rbi +5 -5
  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 +80 -0
  356. data/sig/sentdm/models/channels/sms_number.rbs +37 -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_campaign.rbs +9 -0
  361. data/sig/sentdm/models/channels/supplied_compliance.rbs +37 -0
  362. data/sig/sentdm/models/channels/supplied_document.rbs +30 -0
  363. data/sig/sentdm/models/channels/whatsapp_channel.rbs +78 -0
  364. data/sig/sentdm/models/channels/whatsapp_create_params.rbs +56 -0
  365. data/sig/sentdm/models/channels_state.rbs +55 -0
  366. data/sig/sentdm/models/compliance_attachment_template.rbs +26 -0
  367. data/sig/sentdm/models/compliance_requirement.rbs +76 -0
  368. data/sig/sentdm/models/compliance_requirements.rbs +66 -0
  369. data/sig/sentdm/models/compliance_retrieve_requirements_params.rbs +43 -0
  370. data/sig/sentdm/models/compliance_setup_step.rbs +62 -0
  371. data/sig/sentdm/models/contact_message_summary.rbs +6 -35
  372. data/sig/sentdm/models/contacts_list.rbs +31 -0
  373. data/sig/sentdm/models/conversation_messages_list.rbs +5 -312
  374. data/sig/sentdm/models/entity_type.rbs +22 -0
  375. data/sig/sentdm/models/inbound_media.rbs +35 -0
  376. data/sig/sentdm/models/inbound_message_event_payload.rbs +4 -36
  377. data/sig/sentdm/models/link_event.rbs +44 -0
  378. data/sig/sentdm/models/link_event_payload.rbs +106 -0
  379. data/sig/sentdm/models/message.rbs +130 -0
  380. data/sig/sentdm/models/message_activities.rbs +38 -0
  381. data/sig/sentdm/models/message_activity.rbs +66 -0
  382. data/sig/sentdm/models/message_body.rbs +52 -0
  383. data/sig/sentdm/models/message_button.rbs +34 -0
  384. data/sig/sentdm/models/message_cancel_params.rbs +38 -0
  385. data/sig/sentdm/models/message_channel_options.rbs +26 -0
  386. data/sig/sentdm/models/message_header_media.rbs +19 -0
  387. data/sig/sentdm/models/message_media.rbs +40 -0
  388. data/sig/sentdm/models/message_recipient.rbs +34 -0
  389. data/sig/sentdm/models/message_send_params.rbs +8 -54
  390. data/sig/sentdm/models/message_send_response.rbs +4 -77
  391. data/sig/sentdm/models/message_send_result.rbs +45 -0
  392. data/sig/sentdm/models/message_status_event.rbs +40 -0
  393. data/sig/sentdm/models/mms_market.rbs +35 -0
  394. data/sig/sentdm/models/number_lookup_result.rbs +64 -0
  395. data/sig/sentdm/models/pagination_cursors.rbs +15 -0
  396. data/sig/sentdm/models/pagination_meta.rbs +4 -16
  397. data/sig/sentdm/models/profile_completion_accepted.rbs +15 -0
  398. data/sig/sentdm/models/profile_completion_result.rbs +19 -0
  399. data/sig/sentdm/models/profile_detail.rbs +8 -315
  400. data/sig/sentdm/models/profiles/brand_campaign.rbs +11 -16
  401. data/sig/sentdm/models/profiles_list.rbs +31 -0
  402. data/sig/sentdm/models/sender_profile.rbs +76 -0
  403. data/sig/sentdm/models/sender_profile_billing.rbs +15 -0
  404. data/sig/sentdm/models/sender_profile_billing_request.rbs +15 -0
  405. data/sig/sentdm/models/sender_profile_channels.rbs +30 -0
  406. data/sig/sentdm/models/sender_profile_create_params.rbs +78 -0
  407. data/sig/sentdm/models/sender_profile_delete_params.rbs +20 -0
  408. data/sig/sentdm/models/sender_profile_list_params.rbs +32 -0
  409. data/sig/sentdm/models/sender_profile_rcs.rbs +150 -0
  410. data/sig/sentdm/models/sender_profile_retrieve_params.rbs +20 -0
  411. data/sig/sentdm/models/sender_profile_sms.rbs +40 -0
  412. data/sig/sentdm/models/sender_profile_update_params.rbs +62 -0
  413. data/sig/sentdm/models/sender_profile_whatsapp.rbs +16 -0
  414. data/sig/sentdm/models/sender_profiles_list.rbs +31 -0
  415. data/sig/sentdm/models/tcr_brand_identity_status.rbs +17 -0
  416. data/sig/sentdm/models/tcr_brand_status.rbs +15 -0
  417. data/sig/sentdm/models/tcr_campaign_status.rbs +15 -0
  418. data/sig/sentdm/models/template_body.rbs +4 -43
  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/users.rbs +1 -1
  454. data/sig/sentdm/resources/webhooks.rbs +6 -6
  455. metadata +365 -35
  456. data/lib/sentdm/models/me_retrieve_response.rb +0 -409
  457. data/lib/sentdm/models/message_retrieve_activities_response.rb +0 -175
  458. data/lib/sentdm/models/message_retrieve_status_response.rb +0 -477
  459. data/lib/sentdm/models/number_lookup_response.rb +0 -104
  460. data/lib/sentdm/models/profile_complete_response.rb +0 -74
  461. data/lib/sentdm/models/profile_list_response.rb +0 -65
  462. data/lib/sentdm/models/user_list_response.rb +0 -65
  463. data/lib/sentdm/models/webhook_list_event_types_response.rb +0 -65
  464. data/lib/sentdm/models/webhook_list_events_response.rb +0 -445
  465. data/rbi/sentdm/models/me_retrieve_response.rbi +0 -705
  466. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +0 -319
  467. data/rbi/sentdm/models/message_retrieve_status_response.rbi +0 -765
  468. data/rbi/sentdm/models/number_lookup_response.rbi +0 -166
  469. data/rbi/sentdm/models/profile_list_response.rbi +0 -128
  470. data/rbi/sentdm/models/user_list_response.rbi +0 -128
  471. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +0 -142
  472. data/rbi/sentdm/models/webhook_list_events_response.rbi +0 -647
  473. data/sig/sentdm/models/me_retrieve_response.rbs +0 -306
  474. data/sig/sentdm/models/message_retrieve_activities_response.rbs +0 -137
  475. data/sig/sentdm/models/message_retrieve_status_response.rbs +0 -341
  476. data/sig/sentdm/models/number_lookup_response.rbs +0 -100
  477. data/sig/sentdm/models/profile_complete_response.rbs +0 -55
  478. data/sig/sentdm/models/profile_list_response.rbs +0 -67
  479. data/sig/sentdm/models/user_list_response.rbs +0 -67
  480. data/sig/sentdm/models/webhook_list_event_types_response.rbs +0 -67
  481. data/sig/sentdm/models/webhook_list_events_response.rbs +0 -243
  482. data/sig/sentdm/models/webhook_rotate_secret_response.rbs +0 -51
  483. data/sig/sentdm/models/webhook_test_response.rbs +0 -55
@@ -0,0 +1,214 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class Message < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Sentdm::Message, Sentdm::Internal::AnyHash) }
8
+
9
+ sig { returns(T.nilable(String)) }
10
+ attr_reader :id
11
+
12
+ sig { params(id: String).void }
13
+ attr_writer :id
14
+
15
+ sig { returns(T.nilable(Float)) }
16
+ attr_accessor :active_contact_price
17
+
18
+ sig { returns(T.nilable(String)) }
19
+ attr_reader :channel
20
+
21
+ sig { params(channel: String).void }
22
+ attr_writer :channel
23
+
24
+ sig { returns(T.nilable(String)) }
25
+ attr_reader :contact_id
26
+
27
+ sig { params(contact_id: String).void }
28
+ attr_writer :contact_id
29
+
30
+ sig { returns(T.nilable(Time)) }
31
+ attr_reader :created_at
32
+
33
+ sig { params(created_at: Time).void }
34
+ attr_writer :created_at
35
+
36
+ sig { returns(T.nilable(String)) }
37
+ attr_reader :customer_id
38
+
39
+ sig { params(customer_id: String).void }
40
+ attr_writer :customer_id
41
+
42
+ sig { returns(T.nilable(String)) }
43
+ attr_reader :direction
44
+
45
+ sig { params(direction: String).void }
46
+ attr_writer :direction
47
+
48
+ sig { returns(T.nilable(T::Array[Sentdm::MessageStatusEvent])) }
49
+ attr_accessor :events
50
+
51
+ # Structured message body format for database storage. Preserves channel-specific
52
+ # components (header, header media, body, footer, buttons, MMS subject and media).
53
+ #
54
+ # Persisted as the messageBody jsonb column on Messages. Every write path goes
55
+ # through MessageUtils.MessageBodyJsonOptions, which writes nulls, so the envelope
56
+ # shape is stable regardless of channel or status. Anything that rebuilds this
57
+ # object field by field — the four IMessageBodyStrategy implementations and
58
+ # MessageUtils.BuildSegmentBody — has to carry every member, or that member is
59
+ # silently dropped on whichever path forgot it.
60
+ sig { returns(T.nilable(Sentdm::MessageBody)) }
61
+ attr_reader :message_body
62
+
63
+ sig { params(message_body: T.nilable(Sentdm::MessageBody::OrHash)).void }
64
+ attr_writer :message_body
65
+
66
+ sig { returns(T.nilable(String)) }
67
+ attr_reader :phone
68
+
69
+ sig { params(phone: String).void }
70
+ attr_writer :phone
71
+
72
+ sig { returns(T.nilable(String)) }
73
+ attr_reader :phone_international
74
+
75
+ sig { params(phone_international: String).void }
76
+ attr_writer :phone_international
77
+
78
+ sig { returns(T.nilable(Float)) }
79
+ attr_accessor :price
80
+
81
+ # A human-readable sentence for reason_code, for example "Insufficient balance".
82
+ # Omitted whenever reason_code is.
83
+ sig { returns(T.nilable(String)) }
84
+ attr_accessor :reason
85
+
86
+ # Why the message is at its current status, as a stable platform code such as
87
+ # DELIVERY_007, BUSINESS_003 or DELIVERY_003. Present when the current status is
88
+ # FAILED, FILTERED or BLOCKED and the lifecycle was loaded; omitted otherwise.
89
+ # Switch on this rather than on reason: the code is stable, the wording may be
90
+ # improved. It is the platform's classification of the outcome, never a carrier or
91
+ # vendor code.
92
+ sig { returns(T.nilable(String)) }
93
+ attr_accessor :reason_code
94
+
95
+ sig { returns(T.nilable(String)) }
96
+ attr_reader :region_code
97
+
98
+ sig { params(region_code: String).void }
99
+ attr_writer :region_code
100
+
101
+ sig { returns(T.nilable(String)) }
102
+ attr_reader :status
103
+
104
+ sig { params(status: String).void }
105
+ attr_writer :status
106
+
107
+ sig { returns(T.nilable(String)) }
108
+ attr_accessor :template_category
109
+
110
+ sig { returns(T.nilable(String)) }
111
+ attr_accessor :template_id
112
+
113
+ sig { returns(T.nilable(String)) }
114
+ attr_accessor :template_name
115
+
116
+ # Message response for v3 API — same shape as v2 with snake_case JSON conventions.
117
+ #
118
+ # The shape of a message that was sent immediately: it never has a scheduled_at
119
+ # key. A message that is or was held for a later instant is a
120
+ # ScheduledMessageResponse, and the endpoint decides which of the two to answer
121
+ # with. From always returns this type.
122
+ sig do
123
+ params(
124
+ id: String,
125
+ active_contact_price: T.nilable(Float),
126
+ channel: String,
127
+ contact_id: String,
128
+ created_at: Time,
129
+ customer_id: String,
130
+ direction: String,
131
+ events: T.nilable(T::Array[Sentdm::MessageStatusEvent::OrHash]),
132
+ message_body: T.nilable(Sentdm::MessageBody::OrHash),
133
+ phone: String,
134
+ phone_international: String,
135
+ price: T.nilable(Float),
136
+ reason: T.nilable(String),
137
+ reason_code: T.nilable(String),
138
+ region_code: String,
139
+ status: String,
140
+ template_category: T.nilable(String),
141
+ template_id: T.nilable(String),
142
+ template_name: T.nilable(String)
143
+ ).returns(T.attached_class)
144
+ end
145
+ def self.new(
146
+ id: nil,
147
+ active_contact_price: nil,
148
+ channel: nil,
149
+ contact_id: nil,
150
+ created_at: nil,
151
+ customer_id: nil,
152
+ direction: nil,
153
+ events: nil,
154
+ # Structured message body format for database storage. Preserves channel-specific
155
+ # components (header, header media, body, footer, buttons, MMS subject and media).
156
+ #
157
+ # Persisted as the messageBody jsonb column on Messages. Every write path goes
158
+ # through MessageUtils.MessageBodyJsonOptions, which writes nulls, so the envelope
159
+ # shape is stable regardless of channel or status. Anything that rebuilds this
160
+ # object field by field — the four IMessageBodyStrategy implementations and
161
+ # MessageUtils.BuildSegmentBody — has to carry every member, or that member is
162
+ # silently dropped on whichever path forgot it.
163
+ message_body: nil,
164
+ phone: nil,
165
+ phone_international: nil,
166
+ price: nil,
167
+ # A human-readable sentence for reason_code, for example "Insufficient balance".
168
+ # Omitted whenever reason_code is.
169
+ reason: nil,
170
+ # Why the message is at its current status, as a stable platform code such as
171
+ # DELIVERY_007, BUSINESS_003 or DELIVERY_003. Present when the current status is
172
+ # FAILED, FILTERED or BLOCKED and the lifecycle was loaded; omitted otherwise.
173
+ # Switch on this rather than on reason: the code is stable, the wording may be
174
+ # improved. It is the platform's classification of the outcome, never a carrier or
175
+ # vendor code.
176
+ reason_code: nil,
177
+ region_code: nil,
178
+ status: nil,
179
+ template_category: nil,
180
+ template_id: nil,
181
+ template_name: nil
182
+ )
183
+ end
184
+
185
+ sig do
186
+ override.returns(
187
+ {
188
+ id: String,
189
+ active_contact_price: T.nilable(Float),
190
+ channel: String,
191
+ contact_id: String,
192
+ created_at: Time,
193
+ customer_id: String,
194
+ direction: String,
195
+ events: T.nilable(T::Array[Sentdm::MessageStatusEvent]),
196
+ message_body: T.nilable(Sentdm::MessageBody),
197
+ phone: String,
198
+ phone_international: String,
199
+ price: T.nilable(Float),
200
+ reason: T.nilable(String),
201
+ reason_code: T.nilable(String),
202
+ region_code: String,
203
+ status: String,
204
+ template_category: T.nilable(String),
205
+ template_id: T.nilable(String),
206
+ template_name: T.nilable(String)
207
+ }
208
+ )
209
+ end
210
+ def to_hash
211
+ end
212
+ end
213
+ end
214
+ end
@@ -0,0 +1,63 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageActivities < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::MessageActivities, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # List of activity events ordered by most recent first
12
+ sig { returns(T.nilable(T::Array[Sentdm::MessageActivity])) }
13
+ attr_reader :activities
14
+
15
+ sig { params(activities: T::Array[Sentdm::MessageActivity::OrHash]).void }
16
+ attr_writer :activities
17
+
18
+ # The message ID these activities belong to
19
+ sig { returns(T.nilable(String)) }
20
+ attr_reader :message_id
21
+
22
+ sig { params(message_id: String).void }
23
+ attr_writer :message_id
24
+
25
+ # Pagination metadata for list responses
26
+ sig { returns(T.nilable(Sentdm::PaginationMeta)) }
27
+ attr_reader :pagination
28
+
29
+ sig { params(pagination: Sentdm::PaginationMeta::OrHash).void }
30
+ attr_writer :pagination
31
+
32
+ # Response for GET /messages/{id}/activities
33
+ sig do
34
+ params(
35
+ activities: T::Array[Sentdm::MessageActivity::OrHash],
36
+ message_id: String,
37
+ pagination: Sentdm::PaginationMeta::OrHash
38
+ ).returns(T.attached_class)
39
+ end
40
+ def self.new(
41
+ # List of activity events ordered by most recent first
42
+ activities: nil,
43
+ # The message ID these activities belong to
44
+ message_id: nil,
45
+ # Pagination metadata for list responses
46
+ pagination: nil
47
+ )
48
+ end
49
+
50
+ sig do
51
+ override.returns(
52
+ {
53
+ activities: T::Array[Sentdm::MessageActivity],
54
+ message_id: String,
55
+ pagination: Sentdm::PaginationMeta
56
+ }
57
+ )
58
+ end
59
+ def to_hash
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,145 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageActivity < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::MessageActivity, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # Active contact markup applied on top of the channel cost, formatted to 4 decimal
12
+ # places.
13
+ sig { returns(T.nilable(String)) }
14
+ attr_accessor :active_contact_price
15
+
16
+ # Human-readable description of the activity
17
+ sig { returns(T.nilable(String)) }
18
+ attr_reader :description
19
+
20
+ sig { params(description: String).void }
21
+ attr_writer :description
22
+
23
+ # Sender phone number for this activity (the customer's sending number for
24
+ # outbound, the external sender for inbound). Null when not reported by the
25
+ # provider.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_accessor :from
28
+
29
+ # Channel cost for this activity (e.g., SMS/WhatsApp provider cost), formatted to
30
+ # 4 decimal places.
31
+ sig { returns(T.nilable(String)) }
32
+ attr_accessor :price
33
+
34
+ # A human-readable sentence for reason_code, for example "The recipient is not
35
+ # registered on this channel" Omitted whenever reason_code is.
36
+ sig { returns(T.nilable(String)) }
37
+ attr_accessor :reason
38
+
39
+ # Why the message reached this status, as a stable platform code such as
40
+ # DELIVERY_007 or BUSINESS_003. Present on FAILED, FILTERED and BLOCKED
41
+ # activities; omitted on every status that needs no explanation. Switch on this
42
+ # rather than on reason: the code is stable, the wording may be improved. Same
43
+ # wire name and vocabulary as on the message and the webhook.
44
+ sig { returns(T.nilable(String)) }
45
+ attr_accessor :reason_code
46
+
47
+ # SCHEDULED and CANCELLED activities only, in UTC: on a SCHEDULED entry, when the
48
+ # held message will be released for delivery; on a CANCELLED entry, the instant
49
+ # that was called off. Same wire name as on the send response, the message and the
50
+ # webhook. Omitted on every other activity. A message that quiet hours moved at
51
+ # release has two SCHEDULED entries, each carrying the instant as it stood at that
52
+ # moment.
53
+ sig { returns(T.nilable(Time)) }
54
+ attr_accessor :scheduled_at
55
+
56
+ # Activity status. Outbound: QUEUED, PROCESSED, ROUTED, SCHEDULED, SENT,
57
+ # DELIVERED, READ, FAILED. Inbound (from contact): RECEIVED (terminal).
58
+ sig { returns(T.nilable(String)) }
59
+ attr_reader :status
60
+
61
+ sig { params(status: String).void }
62
+ attr_writer :status
63
+
64
+ # When this activity occurred
65
+ sig { returns(T.nilable(Time)) }
66
+ attr_reader :timestamp
67
+
68
+ sig { params(timestamp: Time).void }
69
+ attr_writer :timestamp
70
+
71
+ # A single message activity event for v3 API.
72
+ #
73
+ # The activity list mixes statuses, so unlike a message it is one shape rather
74
+ # than two: a SCHEDULED entry carries scheduled_at, and every other entry has no
75
+ # such key.
76
+ sig do
77
+ params(
78
+ active_contact_price: T.nilable(String),
79
+ description: String,
80
+ from: T.nilable(String),
81
+ price: T.nilable(String),
82
+ reason: T.nilable(String),
83
+ reason_code: T.nilable(String),
84
+ scheduled_at: T.nilable(Time),
85
+ status: String,
86
+ timestamp: Time
87
+ ).returns(T.attached_class)
88
+ end
89
+ def self.new(
90
+ # Active contact markup applied on top of the channel cost, formatted to 4 decimal
91
+ # places.
92
+ active_contact_price: nil,
93
+ # Human-readable description of the activity
94
+ description: nil,
95
+ # Sender phone number for this activity (the customer's sending number for
96
+ # outbound, the external sender for inbound). Null when not reported by the
97
+ # provider.
98
+ from: nil,
99
+ # Channel cost for this activity (e.g., SMS/WhatsApp provider cost), formatted to
100
+ # 4 decimal places.
101
+ price: nil,
102
+ # A human-readable sentence for reason_code, for example "The recipient is not
103
+ # registered on this channel" Omitted whenever reason_code is.
104
+ reason: nil,
105
+ # Why the message reached this status, as a stable platform code such as
106
+ # DELIVERY_007 or BUSINESS_003. Present on FAILED, FILTERED and BLOCKED
107
+ # activities; omitted on every status that needs no explanation. Switch on this
108
+ # rather than on reason: the code is stable, the wording may be improved. Same
109
+ # wire name and vocabulary as on the message and the webhook.
110
+ reason_code: nil,
111
+ # SCHEDULED and CANCELLED activities only, in UTC: on a SCHEDULED entry, when the
112
+ # held message will be released for delivery; on a CANCELLED entry, the instant
113
+ # that was called off. Same wire name as on the send response, the message and the
114
+ # webhook. Omitted on every other activity. A message that quiet hours moved at
115
+ # release has two SCHEDULED entries, each carrying the instant as it stood at that
116
+ # moment.
117
+ scheduled_at: nil,
118
+ # Activity status. Outbound: QUEUED, PROCESSED, ROUTED, SCHEDULED, SENT,
119
+ # DELIVERED, READ, FAILED. Inbound (from contact): RECEIVED (terminal).
120
+ status: nil,
121
+ # When this activity occurred
122
+ timestamp: nil
123
+ )
124
+ end
125
+
126
+ sig do
127
+ override.returns(
128
+ {
129
+ active_contact_price: T.nilable(String),
130
+ description: String,
131
+ from: T.nilable(String),
132
+ price: T.nilable(String),
133
+ reason: T.nilable(String),
134
+ reason_code: T.nilable(String),
135
+ scheduled_at: T.nilable(Time),
136
+ status: String,
137
+ timestamp: Time
138
+ }
139
+ )
140
+ end
141
+ def to_hash
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,104 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageBody < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Sentdm::MessageBody, Sentdm::Internal::AnyHash) }
8
+
9
+ sig { returns(T.nilable(T::Array[Sentdm::MessageButton])) }
10
+ attr_accessor :buttons
11
+
12
+ sig { returns(T.nilable(String)) }
13
+ attr_reader :content
14
+
15
+ sig { params(content: String).void }
16
+ attr_writer :content
17
+
18
+ sig { returns(T.nilable(String)) }
19
+ attr_accessor :footer
20
+
21
+ sig { returns(T.nilable(String)) }
22
+ attr_accessor :header
23
+
24
+ # The media asset that rode a message's header, recorded as sent.
25
+ sig { returns(T.nilable(Sentdm::MessageHeaderMedia)) }
26
+ attr_reader :header_media
27
+
28
+ sig do
29
+ params(header_media: T.nilable(Sentdm::MessageHeaderMedia::OrHash)).void
30
+ end
31
+ attr_writer :header_media
32
+
33
+ # MMS attachments, as the publicly fetchable URLs handed to the carrier. Null on
34
+ # every other channel.
35
+ #
36
+ # Persisted rather than derived because a resend and a curfew release rebuild the
37
+ # send from the stored row — MessageReplayCommandBuilder reads templateId and
38
+ # templateVariables and nothing else — so media that lives only on the original
39
+ # request would silently turn a replayed MMS into a text message.
40
+ sig { returns(T.nilable(T::Array[Sentdm::MessageMedia])) }
41
+ attr_accessor :media
42
+
43
+ # MMS subject line. Null on every other channel.
44
+ sig { returns(T.nilable(String)) }
45
+ attr_accessor :subject
46
+
47
+ # Structured message body format for database storage. Preserves channel-specific
48
+ # components (header, header media, body, footer, buttons, MMS subject and media).
49
+ #
50
+ # Persisted as the messageBody jsonb column on Messages. Every write path goes
51
+ # through MessageUtils.MessageBodyJsonOptions, which writes nulls, so the envelope
52
+ # shape is stable regardless of channel or status. Anything that rebuilds this
53
+ # object field by field — the four IMessageBodyStrategy implementations and
54
+ # MessageUtils.BuildSegmentBody — has to carry every member, or that member is
55
+ # silently dropped on whichever path forgot it.
56
+ sig do
57
+ params(
58
+ buttons: T.nilable(T::Array[Sentdm::MessageButton::OrHash]),
59
+ content: String,
60
+ footer: T.nilable(String),
61
+ header: T.nilable(String),
62
+ header_media: T.nilable(Sentdm::MessageHeaderMedia::OrHash),
63
+ media: T.nilable(T::Array[Sentdm::MessageMedia::OrHash]),
64
+ subject: T.nilable(String)
65
+ ).returns(T.attached_class)
66
+ end
67
+ def self.new(
68
+ buttons: nil,
69
+ content: nil,
70
+ footer: nil,
71
+ header: nil,
72
+ # The media asset that rode a message's header, recorded as sent.
73
+ header_media: nil,
74
+ # MMS attachments, as the publicly fetchable URLs handed to the carrier. Null on
75
+ # every other channel.
76
+ #
77
+ # Persisted rather than derived because a resend and a curfew release rebuild the
78
+ # send from the stored row — MessageReplayCommandBuilder reads templateId and
79
+ # templateVariables and nothing else — so media that lives only on the original
80
+ # request would silently turn a replayed MMS into a text message.
81
+ media: nil,
82
+ # MMS subject line. Null on every other channel.
83
+ subject: nil
84
+ )
85
+ end
86
+
87
+ sig do
88
+ override.returns(
89
+ {
90
+ buttons: T.nilable(T::Array[Sentdm::MessageButton]),
91
+ content: String,
92
+ footer: T.nilable(String),
93
+ header: T.nilable(String),
94
+ header_media: T.nilable(Sentdm::MessageHeaderMedia),
95
+ media: T.nilable(T::Array[Sentdm::MessageMedia]),
96
+ subject: T.nilable(String)
97
+ }
98
+ )
99
+ end
100
+ def to_hash
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,52 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageButton < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Sentdm::MessageButton, Sentdm::Internal::AnyHash) }
8
+
9
+ sig { returns(T.nilable(String)) }
10
+ attr_accessor :postback_data
11
+
12
+ sig { returns(T.nilable(String)) }
13
+ attr_accessor :text
14
+
15
+ sig { returns(T.nilable(String)) }
16
+ attr_reader :type
17
+
18
+ sig { params(type: String).void }
19
+ attr_writer :type
20
+
21
+ sig { returns(T.nilable(String)) }
22
+ attr_reader :value
23
+
24
+ sig { params(value: String).void }
25
+ attr_writer :value
26
+
27
+ sig do
28
+ params(
29
+ postback_data: T.nilable(String),
30
+ text: T.nilable(String),
31
+ type: String,
32
+ value: String
33
+ ).returns(T.attached_class)
34
+ end
35
+ def self.new(postback_data: nil, text: nil, type: nil, value: nil)
36
+ end
37
+
38
+ sig do
39
+ override.returns(
40
+ {
41
+ postback_data: T.nilable(String),
42
+ text: T.nilable(String),
43
+ type: String,
44
+ value: String
45
+ }
46
+ )
47
+ end
48
+ def to_hash
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,59 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageCancelParams < Sentdm::Models::MutationRequest
6
+ extend Sentdm::Internal::Type::RequestParameters::Converter
7
+ include Sentdm::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Sentdm::MessageCancelParams, Sentdm::Internal::AnyHash)
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
17
+ sig { returns(T.nilable(String)) }
18
+ attr_reader :idempotency_key
19
+
20
+ sig { params(idempotency_key: String).void }
21
+ attr_writer :idempotency_key
22
+
23
+ sig { returns(T.nilable(String)) }
24
+ attr_reader :x_profile_id
25
+
26
+ sig { params(x_profile_id: String).void }
27
+ attr_writer :x_profile_id
28
+
29
+ sig do
30
+ params(
31
+ id: String,
32
+ idempotency_key: String,
33
+ x_profile_id: String,
34
+ request_options: Sentdm::RequestOptions::OrHash
35
+ ).returns(T.attached_class)
36
+ end
37
+ def self.new(
38
+ id:,
39
+ idempotency_key: nil,
40
+ x_profile_id: nil,
41
+ request_options: {}
42
+ )
43
+ end
44
+
45
+ sig do
46
+ override.returns(
47
+ {
48
+ id: String,
49
+ idempotency_key: String,
50
+ x_profile_id: String,
51
+ request_options: Sentdm::RequestOptions
52
+ }
53
+ )
54
+ end
55
+ def to_hash
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,65 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class MessageChannelOptions < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::MessageChannelOptions, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # Recipient country this entry is meant for (ISO 3166-1 alpha-2, e.g. US).
12
+ # Optional. Accepted and stored, not acted on yet.
13
+ sig { returns(T.nilable(String)) }
14
+ attr_accessor :country
15
+
16
+ # Sender numbers in E.164. Each must be an active sender on your account for this
17
+ # channel. That is account state rather than request shape, so it is decided per
18
+ # message: the request is accepted with 202 and a message naming an unusable
19
+ # number is recorded BLOCKED with error code BUSINESS_029.
20
+ sig { returns(T.nilable(T::Array[String])) }
21
+ attr_accessor :from
22
+
23
+ # How to pick a number from From, e.g. sticky or geo. Optional. Accepted and
24
+ # stored, not acted on yet.
25
+ sig { returns(T.nilable(String)) }
26
+ attr_accessor :strategy
27
+
28
+ # One entry of a channel's list in Channels, e.g. {"country": "US", "from":
29
+ # ["+15559990002", "+15559990003"], "strategy": "sticky"}.
30
+ sig do
31
+ params(
32
+ country: T.nilable(String),
33
+ from: T.nilable(T::Array[String]),
34
+ strategy: T.nilable(String)
35
+ ).returns(T.attached_class)
36
+ end
37
+ def self.new(
38
+ # Recipient country this entry is meant for (ISO 3166-1 alpha-2, e.g. US).
39
+ # Optional. Accepted and stored, not acted on yet.
40
+ country: nil,
41
+ # Sender numbers in E.164. Each must be an active sender on your account for this
42
+ # channel. That is account state rather than request shape, so it is decided per
43
+ # message: the request is accepted with 202 and a message naming an unusable
44
+ # number is recorded BLOCKED with error code BUSINESS_029.
45
+ from: nil,
46
+ # How to pick a number from From, e.g. sticky or geo. Optional. Accepted and
47
+ # stored, not acted on yet.
48
+ strategy: nil
49
+ )
50
+ end
51
+
52
+ sig do
53
+ override.returns(
54
+ {
55
+ country: T.nilable(String),
56
+ from: T.nilable(T::Array[String]),
57
+ strategy: T.nilable(String)
58
+ }
59
+ )
60
+ end
61
+ def to_hash
62
+ end
63
+ end
64
+ end
65
+ end