sentdm 0.45.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 (476) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -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_header_media.rb +31 -0
  84. data/lib/sentdm/models/message_media.rb +74 -0
  85. data/lib/sentdm/models/message_recipient.rb +46 -0
  86. data/lib/sentdm/models/message_send_params.rb +6 -90
  87. data/lib/sentdm/models/message_send_response.rb +3 -95
  88. data/lib/sentdm/models/message_send_result.rb +55 -0
  89. data/lib/sentdm/models/message_status_event.rb +54 -0
  90. data/lib/sentdm/models/mms_market.rb +48 -0
  91. data/lib/sentdm/models/number_lookup_result.rb +63 -0
  92. data/lib/sentdm/models/pagination_cursors.rb +27 -0
  93. data/lib/sentdm/models/pagination_meta.rb +3 -27
  94. data/lib/sentdm/models/profile_completion_accepted.rb +20 -0
  95. data/lib/sentdm/models/profile_completion_result.rb +31 -0
  96. data/lib/sentdm/models/profile_detail.rb +6 -408
  97. data/lib/sentdm/models/profiles/brand_campaign.rb +3 -15
  98. data/lib/sentdm/models/profiles_list.rb +26 -0
  99. data/lib/sentdm/models/sender_profile.rb +138 -0
  100. data/lib/sentdm/models/sender_profile_billing.rb +21 -0
  101. data/lib/sentdm/models/sender_profile_billing_request.rb +33 -0
  102. data/lib/sentdm/models/sender_profile_channels.rb +90 -0
  103. data/lib/sentdm/models/sender_profile_create_params.rb +116 -0
  104. data/lib/sentdm/models/sender_profile_delete_params.rb +20 -0
  105. data/lib/sentdm/models/sender_profile_list_params.rb +30 -0
  106. data/lib/sentdm/models/sender_profile_rcs.rb +209 -0
  107. data/lib/sentdm/models/sender_profile_retrieve_params.rb +20 -0
  108. data/lib/sentdm/models/sender_profile_sms.rb +106 -0
  109. data/lib/sentdm/models/sender_profile_update_params.rb +71 -0
  110. data/lib/sentdm/models/sender_profile_whatsapp.rb +61 -0
  111. data/lib/sentdm/models/sender_profiles_list.rb +26 -0
  112. data/lib/sentdm/models/tcr_brand_identity_status.rb +17 -0
  113. data/lib/sentdm/models/tcr_brand_status.rb +16 -0
  114. data/lib/sentdm/models/tcr_campaign_status.rb +16 -0
  115. data/lib/sentdm/models/template_body.rb +3 -70
  116. data/lib/sentdm/models/template_header.rb +3 -37
  117. data/lib/sentdm/models/template_header_location.rb +38 -0
  118. data/lib/sentdm/models/template_media_item.rb +34 -0
  119. data/lib/sentdm/models/template_mms_body_content.rb +49 -0
  120. data/lib/sentdm/models/template_ref.rb +51 -0
  121. data/lib/sentdm/models/template_variable.rb +3 -64
  122. data/lib/sentdm/models/template_variable_props.rb +65 -0
  123. data/lib/sentdm/models/templates_list.rb +26 -0
  124. data/lib/sentdm/models/users_list.rb +26 -0
  125. data/lib/sentdm/models/voice/call.rb +3 -54
  126. data/lib/sentdm/models/voice/call_leg.rb +58 -0
  127. data/lib/sentdm/models/webhook_create_params.rb +3 -25
  128. data/lib/sentdm/models/webhook_delivery.rb +160 -0
  129. data/lib/sentdm/models/webhook_event_types_list.rb +26 -0
  130. data/lib/sentdm/models/webhook_events_list.rb +26 -0
  131. data/lib/sentdm/models/webhook_response.rb +3 -28
  132. data/lib/sentdm/models/webhook_secret.rb +15 -0
  133. data/lib/sentdm/models/webhook_sender_profile.rb +29 -0
  134. data/lib/sentdm/models/webhook_sender_profile_config.rb +27 -0
  135. data/lib/sentdm/models/webhook_test.rb +21 -0
  136. data/lib/sentdm/models/webhook_update_params.rb +3 -25
  137. data/lib/sentdm/models/webhooks_list.rb +26 -0
  138. data/lib/sentdm/models.rb +188 -0
  139. data/lib/sentdm/resources/channels/rcs.rb +177 -0
  140. data/lib/sentdm/resources/channels/sms.rb +417 -0
  141. data/lib/sentdm/resources/channels/whatsapp.rb +106 -0
  142. data/lib/sentdm/resources/channels.rb +162 -0
  143. data/lib/sentdm/resources/compliance.rb +127 -0
  144. data/lib/sentdm/resources/conversations.rb +4 -4
  145. data/lib/sentdm/resources/me.rb +2 -2
  146. data/lib/sentdm/resources/messages.rb +71 -6
  147. data/lib/sentdm/resources/numbers.rb +2 -2
  148. data/lib/sentdm/resources/profiles.rb +4 -4
  149. data/lib/sentdm/resources/sender_profiles.rb +463 -0
  150. data/lib/sentdm/resources/users.rb +2 -2
  151. data/lib/sentdm/resources/webhooks.rb +10 -10
  152. data/lib/sentdm/version.rb +1 -1
  153. data/lib/sentdm.rb +120 -11
  154. data/rbi/sentdm/client.rbi +64 -0
  155. data/rbi/sentdm/internal/sender_profiles_page.rbi +122 -0
  156. data/rbi/sentdm/models/account.rbi +242 -0
  157. data/rbi/sentdm/models/account_channels.rbi +66 -0
  158. data/rbi/sentdm/models/account_profile.rbi +116 -0
  159. data/rbi/sentdm/models/account_rcs_channel.rbi +45 -0
  160. data/rbi/sentdm/models/account_sms_channel.rbi +45 -0
  161. data/rbi/sentdm/models/account_whatsapp_channel.rbi +58 -0
  162. data/rbi/sentdm/models/api_response_of_account.rbi +78 -0
  163. data/rbi/sentdm/models/{webhook_rotate_secret_response.rbi → api_response_of_cancelled_message.rbi} +6 -41
  164. data/rbi/sentdm/models/api_response_of_channels_state.rbi +78 -0
  165. data/rbi/sentdm/models/api_response_of_compliance_requirements.rbi +81 -0
  166. data/rbi/sentdm/models/api_response_of_contacts_list.rbi +74 -0
  167. data/rbi/sentdm/models/api_response_of_message.rbi +84 -0
  168. data/rbi/sentdm/models/api_response_of_message_activities.rbi +77 -0
  169. data/rbi/sentdm/models/{webhook_test_response.rbi → api_response_of_number_lookup_result.rbi} +9 -43
  170. data/rbi/sentdm/models/api_response_of_profile_completion_accepted.rbi +83 -0
  171. data/rbi/sentdm/models/{profile_complete_response.rbi → api_response_of_profile_completion_result.rbi} +6 -52
  172. data/rbi/sentdm/models/api_response_of_profiles_list.rbi +74 -0
  173. data/rbi/sentdm/models/api_response_of_sender_profile.rbi +90 -0
  174. data/rbi/sentdm/models/api_response_of_sender_profiles_list.rbi +77 -0
  175. data/rbi/sentdm/models/api_response_of_templates_list.rbi +74 -0
  176. data/rbi/sentdm/models/api_response_of_users_list.rbi +74 -0
  177. data/rbi/sentdm/models/api_response_of_webhook_event_types_list.rbi +79 -0
  178. data/rbi/sentdm/models/api_response_of_webhook_events_list.rbi +77 -0
  179. data/rbi/sentdm/models/api_response_of_webhook_secret.rbi +74 -0
  180. data/rbi/sentdm/models/api_response_of_webhook_test.rbi +74 -0
  181. data/rbi/sentdm/models/api_response_of_webhooks_list.rbi +74 -0
  182. data/rbi/sentdm/models/billing_contact.rbi +49 -0
  183. data/rbi/sentdm/models/brand_business.rbi +115 -0
  184. data/rbi/sentdm/models/brand_business_info.rbi +3 -49
  185. data/rbi/sentdm/models/brand_compliance.rbi +108 -0
  186. data/rbi/sentdm/models/brand_contact.rbi +78 -0
  187. data/rbi/sentdm/models/brand_with_kyc.rbi +167 -0
  188. data/rbi/sentdm/models/cancelled_message.rbi +37 -0
  189. data/rbi/sentdm/models/channel_event_payload.rbi +4 -204
  190. data/rbi/sentdm/models/channel_list_params.rbi +38 -0
  191. data/rbi/sentdm/models/channel_score.rbi +56 -0
  192. data/rbi/sentdm/models/channels/api_response_of_list_of_sms_market.rbi +76 -0
  193. data/rbi/sentdm/models/channels/api_response_of_rcs_agent.rbi +103 -0
  194. data/rbi/sentdm/models/channels/api_response_of_sms_market.rbi +93 -0
  195. data/rbi/sentdm/models/channels/api_response_of_whatsapp_channel.rbi +85 -0
  196. data/rbi/sentdm/models/channels/market_compliance.rbi +770 -0
  197. data/rbi/sentdm/models/channels/rc_create_params.rbi +397 -0
  198. data/rbi/sentdm/models/channels/rcs_address.rbi +62 -0
  199. data/rbi/sentdm/models/channels/rcs_agent.rbi +320 -0
  200. data/rbi/sentdm/models/channels/sms_create_params.rbi +291 -0
  201. data/rbi/sentdm/models/channels/sms_list_params.rbi +40 -0
  202. data/rbi/sentdm/models/channels/sms_market.rbi +247 -0
  203. data/rbi/sentdm/models/channels/sms_number.rbi +60 -0
  204. data/rbi/sentdm/models/channels/sms_number_request.rbi +48 -0
  205. data/rbi/sentdm/models/channels/sms_retrieve_params.rbi +56 -0
  206. data/rbi/sentdm/models/channels/sms_update_params.rbi +93 -0
  207. data/rbi/sentdm/models/channels/supplied_compliance.rbi +140 -0
  208. data/rbi/sentdm/models/channels/supplied_document.rbi +57 -0
  209. data/rbi/sentdm/models/channels/whatsapp_channel.rbi +172 -0
  210. data/rbi/sentdm/models/channels/whatsapp_create_params.rbi +104 -0
  211. data/rbi/sentdm/models/channels_state.rbi +151 -0
  212. data/rbi/sentdm/models/compliance_attachment_template.rbi +56 -0
  213. data/rbi/sentdm/models/compliance_requirement.rbi +149 -0
  214. data/rbi/sentdm/models/compliance_requirements.rbi +165 -0
  215. data/rbi/sentdm/models/compliance_retrieve_requirements_params.rbi +79 -0
  216. data/rbi/sentdm/models/compliance_setup_step.rbi +115 -0
  217. data/rbi/sentdm/models/contact_message_summary.rbi +4 -69
  218. data/rbi/sentdm/models/contacts_list.rbi +50 -0
  219. data/rbi/sentdm/models/conversation_messages_list.rbi +4 -669
  220. data/rbi/sentdm/models/entity_type.rbi +23 -0
  221. data/rbi/sentdm/models/inbound_media.rbi +76 -0
  222. data/rbi/sentdm/models/inbound_message_event_payload.rbi +3 -85
  223. data/rbi/sentdm/models/link_event.rbi +128 -0
  224. data/rbi/sentdm/models/link_event_payload.rbi +279 -0
  225. data/rbi/sentdm/models/message.rbi +214 -0
  226. data/rbi/sentdm/models/message_activities.rbi +63 -0
  227. data/rbi/sentdm/models/message_activity.rbi +145 -0
  228. data/rbi/sentdm/models/message_body.rbi +104 -0
  229. data/rbi/sentdm/models/message_button.rbi +52 -0
  230. data/rbi/sentdm/models/message_cancel_params.rbi +59 -0
  231. data/rbi/sentdm/models/message_channel_options.rbi +65 -0
  232. data/rbi/sentdm/models/message_header_media.rbi +44 -0
  233. data/rbi/sentdm/models/message_media.rbi +95 -0
  234. data/rbi/sentdm/models/message_recipient.rbi +70 -0
  235. data/rbi/sentdm/models/message_send_params.rbi +7 -155
  236. data/rbi/sentdm/models/message_send_response.rbi +4 -163
  237. data/rbi/sentdm/models/message_send_result.rbi +85 -0
  238. data/rbi/sentdm/models/message_status_event.rbi +70 -0
  239. data/rbi/sentdm/models/mms_market.rbi +66 -0
  240. data/rbi/sentdm/models/number_lookup_result.rbi +89 -0
  241. data/rbi/sentdm/models/pagination_cursors.rbi +42 -0
  242. data/rbi/sentdm/models/pagination_meta.rbi +4 -43
  243. data/rbi/sentdm/models/profile_completion_accepted.rbi +33 -0
  244. data/rbi/sentdm/models/profile_completion_result.rbi +43 -0
  245. data/rbi/sentdm/models/profile_detail.rbi +8 -621
  246. data/rbi/sentdm/models/profiles/brand_campaign.rbi +3 -45
  247. data/rbi/sentdm/models/profiles_list.rbi +50 -0
  248. data/rbi/sentdm/models/sender_profile.rbi +204 -0
  249. data/rbi/sentdm/models/sender_profile_billing.rbi +34 -0
  250. data/rbi/sentdm/models/sender_profile_billing_request.rbi +46 -0
  251. data/rbi/sentdm/models/sender_profile_channels.rbi +163 -0
  252. data/rbi/sentdm/models/sender_profile_create_params.rbi +190 -0
  253. data/rbi/sentdm/models/sender_profile_delete_params.rbi +35 -0
  254. data/rbi/sentdm/models/sender_profile_list_params.rbi +57 -0
  255. data/rbi/sentdm/models/sender_profile_rcs.rbi +211 -0
  256. data/rbi/sentdm/models/sender_profile_retrieve_params.rbi +35 -0
  257. data/rbi/sentdm/models/sender_profile_sms.rbi +156 -0
  258. data/rbi/sentdm/models/sender_profile_update_params.rbi +96 -0
  259. data/rbi/sentdm/models/sender_profile_whatsapp.rbi +83 -0
  260. data/rbi/sentdm/models/sender_profiles_list.rbi +54 -0
  261. data/rbi/sentdm/models/tcr_brand_identity_status.rbi +27 -0
  262. data/rbi/sentdm/models/tcr_brand_status.rbi +20 -0
  263. data/rbi/sentdm/models/tcr_campaign_status.rbi +23 -0
  264. data/rbi/sentdm/models/template_body.rbi +6 -114
  265. data/rbi/sentdm/models/template_header.rbi +4 -53
  266. data/rbi/sentdm/models/template_header_location.rbi +47 -0
  267. data/rbi/sentdm/models/template_media_item.rbi +51 -0
  268. data/rbi/sentdm/models/template_mms_body_content.rbi +73 -0
  269. data/rbi/sentdm/models/template_ref.rbi +79 -0
  270. data/rbi/sentdm/models/template_variable.rbi +4 -80
  271. data/rbi/sentdm/models/template_variable_props.rbi +81 -0
  272. data/rbi/sentdm/models/templates_list.rbi +50 -0
  273. data/rbi/sentdm/models/users_list.rbi +50 -0
  274. data/rbi/sentdm/models/voice/call.rbi +3 -86
  275. data/rbi/sentdm/models/voice/call_leg.rbi +90 -0
  276. data/rbi/sentdm/models/webhook_create_params.rbi +4 -49
  277. data/rbi/sentdm/models/webhook_delivery.rbi +211 -0
  278. data/rbi/sentdm/models/webhook_event_types_list.rbi +54 -0
  279. data/rbi/sentdm/models/webhook_events_list.rbi +52 -0
  280. data/rbi/sentdm/models/webhook_response.rbi +4 -50
  281. data/rbi/sentdm/models/webhook_secret.rbi +24 -0
  282. data/rbi/sentdm/models/webhook_sender_profile.rbi +46 -0
  283. data/rbi/sentdm/models/webhook_sender_profile_config.rbi +44 -0
  284. data/rbi/sentdm/models/webhook_test.rbi +32 -0
  285. data/rbi/sentdm/models/webhook_update_params.rbi +4 -49
  286. data/rbi/sentdm/models/webhooks_list.rbi +50 -0
  287. data/rbi/sentdm/models.rbi +197 -0
  288. data/rbi/sentdm/resources/channels/rcs.rbi +208 -0
  289. data/rbi/sentdm/resources/channels/sms.rbi +437 -0
  290. data/rbi/sentdm/resources/channels/whatsapp.rbi +108 -0
  291. data/rbi/sentdm/resources/channels.rbi +149 -0
  292. data/rbi/sentdm/resources/compliance.rbi +121 -0
  293. data/rbi/sentdm/resources/conversations.rbi +2 -10
  294. data/rbi/sentdm/resources/me.rbi +1 -1
  295. data/rbi/sentdm/resources/messages.rbi +64 -7
  296. data/rbi/sentdm/resources/numbers.rbi +1 -1
  297. data/rbi/sentdm/resources/profiles.rbi +2 -2
  298. data/rbi/sentdm/resources/sender_profiles.rbi +461 -0
  299. data/rbi/sentdm/resources/users.rbi +1 -1
  300. data/rbi/sentdm/resources/webhooks.rbi +6 -12
  301. data/sig/sentdm/client.rbs +4 -0
  302. data/sig/sentdm/internal/sender_profiles_page.rbs +80 -0
  303. data/sig/sentdm/models/account.rbs +111 -0
  304. data/sig/sentdm/models/account_channels.rbs +38 -0
  305. data/sig/sentdm/models/account_profile.rbs +68 -0
  306. data/sig/sentdm/models/account_rcs_channel.rbs +17 -0
  307. data/sig/sentdm/models/account_sms_channel.rbs +17 -0
  308. data/sig/sentdm/models/account_whatsapp_channel.rbs +28 -0
  309. data/sig/sentdm/models/api_response_of_account.rbs +39 -0
  310. data/sig/sentdm/models/api_response_of_cancelled_message.rbs +39 -0
  311. data/sig/sentdm/models/api_response_of_channels_state.rbs +39 -0
  312. data/sig/sentdm/models/api_response_of_compliance_requirements.rbs +39 -0
  313. data/sig/sentdm/models/api_response_of_contacts_list.rbs +39 -0
  314. data/sig/sentdm/models/api_response_of_message.rbs +39 -0
  315. data/sig/sentdm/models/api_response_of_message_activities.rbs +39 -0
  316. data/sig/sentdm/models/api_response_of_number_lookup_result.rbs +39 -0
  317. data/sig/sentdm/models/api_response_of_profile_completion_accepted.rbs +39 -0
  318. data/sig/sentdm/models/api_response_of_profile_completion_result.rbs +39 -0
  319. data/sig/sentdm/models/api_response_of_profiles_list.rbs +39 -0
  320. data/sig/sentdm/models/api_response_of_sender_profile.rbs +39 -0
  321. data/sig/sentdm/models/api_response_of_sender_profiles_list.rbs +39 -0
  322. data/sig/sentdm/models/api_response_of_templates_list.rbs +39 -0
  323. data/sig/sentdm/models/api_response_of_users_list.rbs +39 -0
  324. data/sig/sentdm/models/api_response_of_webhook_event_types_list.rbs +39 -0
  325. data/sig/sentdm/models/api_response_of_webhook_events_list.rbs +39 -0
  326. data/sig/sentdm/models/api_response_of_webhook_secret.rbs +39 -0
  327. data/sig/sentdm/models/api_response_of_webhook_test.rbs +39 -0
  328. data/sig/sentdm/models/api_response_of_webhooks_list.rbs +39 -0
  329. data/sig/sentdm/models/billing_contact.rbs +30 -0
  330. data/sig/sentdm/models/brand_business.rbs +70 -0
  331. data/sig/sentdm/models/brand_business_info.rbs +4 -23
  332. data/sig/sentdm/models/brand_compliance.rbs +56 -0
  333. data/sig/sentdm/models/brand_contact.rbs +47 -0
  334. data/sig/sentdm/models/brand_with_kyc.rbs +93 -0
  335. data/sig/sentdm/models/cancelled_message.rbs +15 -0
  336. data/sig/sentdm/models/channel_event_payload.rbs +4 -56
  337. data/sig/sentdm/models/channel_list_params.rbs +25 -0
  338. data/sig/sentdm/models/channel_score.rbs +32 -0
  339. data/sig/sentdm/models/channels/api_response_of_list_of_sms_market.rbs +41 -0
  340. data/sig/sentdm/models/channels/api_response_of_rcs_agent.rbs +41 -0
  341. data/sig/sentdm/models/channels/api_response_of_sms_market.rbs +41 -0
  342. data/sig/sentdm/models/channels/api_response_of_whatsapp_channel.rbs +43 -0
  343. data/sig/sentdm/models/channels/market_compliance.rbs +338 -0
  344. data/sig/sentdm/models/channels/rc_create_params.rbs +242 -0
  345. data/sig/sentdm/models/channels/rcs_address.rbs +42 -0
  346. data/sig/sentdm/models/channels/rcs_agent.rbs +181 -0
  347. data/sig/sentdm/models/channels/sms_create_params.rbs +116 -0
  348. data/sig/sentdm/models/channels/sms_list_params.rbs +27 -0
  349. data/sig/sentdm/models/channels/sms_market.rbs +85 -0
  350. data/sig/sentdm/models/channels/sms_number.rbs +28 -0
  351. data/sig/sentdm/models/channels/sms_number_request.rbs +17 -0
  352. data/sig/sentdm/models/channels/sms_retrieve_params.rbs +36 -0
  353. data/sig/sentdm/models/channels/sms_update_params.rbs +63 -0
  354. data/sig/sentdm/models/channels/supplied_compliance.rbs +32 -0
  355. data/sig/sentdm/models/channels/supplied_document.rbs +30 -0
  356. data/sig/sentdm/models/channels/whatsapp_channel.rbs +78 -0
  357. data/sig/sentdm/models/channels/whatsapp_create_params.rbs +56 -0
  358. data/sig/sentdm/models/channels_state.rbs +55 -0
  359. data/sig/sentdm/models/compliance_attachment_template.rbs +26 -0
  360. data/sig/sentdm/models/compliance_requirement.rbs +76 -0
  361. data/sig/sentdm/models/compliance_requirements.rbs +66 -0
  362. data/sig/sentdm/models/compliance_retrieve_requirements_params.rbs +43 -0
  363. data/sig/sentdm/models/compliance_setup_step.rbs +62 -0
  364. data/sig/sentdm/models/contact_message_summary.rbs +6 -35
  365. data/sig/sentdm/models/contacts_list.rbs +31 -0
  366. data/sig/sentdm/models/conversation_messages_list.rbs +5 -312
  367. data/sig/sentdm/models/entity_type.rbs +22 -0
  368. data/sig/sentdm/models/inbound_media.rbs +35 -0
  369. data/sig/sentdm/models/inbound_message_event_payload.rbs +4 -36
  370. data/sig/sentdm/models/link_event.rbs +44 -0
  371. data/sig/sentdm/models/link_event_payload.rbs +106 -0
  372. data/sig/sentdm/models/message.rbs +130 -0
  373. data/sig/sentdm/models/message_activities.rbs +38 -0
  374. data/sig/sentdm/models/message_activity.rbs +66 -0
  375. data/sig/sentdm/models/message_body.rbs +52 -0
  376. data/sig/sentdm/models/message_button.rbs +34 -0
  377. data/sig/sentdm/models/message_cancel_params.rbs +38 -0
  378. data/sig/sentdm/models/message_channel_options.rbs +26 -0
  379. data/sig/sentdm/models/message_header_media.rbs +19 -0
  380. data/sig/sentdm/models/message_media.rbs +40 -0
  381. data/sig/sentdm/models/message_recipient.rbs +34 -0
  382. data/sig/sentdm/models/message_send_params.rbs +8 -54
  383. data/sig/sentdm/models/message_send_response.rbs +4 -77
  384. data/sig/sentdm/models/message_send_result.rbs +45 -0
  385. data/sig/sentdm/models/message_status_event.rbs +40 -0
  386. data/sig/sentdm/models/mms_market.rbs +35 -0
  387. data/sig/sentdm/models/number_lookup_result.rbs +64 -0
  388. data/sig/sentdm/models/pagination_cursors.rbs +15 -0
  389. data/sig/sentdm/models/pagination_meta.rbs +4 -16
  390. data/sig/sentdm/models/profile_completion_accepted.rbs +15 -0
  391. data/sig/sentdm/models/profile_completion_result.rbs +19 -0
  392. data/sig/sentdm/models/profile_detail.rbs +8 -315
  393. data/sig/sentdm/models/profiles/brand_campaign.rbs +4 -16
  394. data/sig/sentdm/models/profiles_list.rbs +31 -0
  395. data/sig/sentdm/models/sender_profile.rbs +76 -0
  396. data/sig/sentdm/models/sender_profile_billing.rbs +15 -0
  397. data/sig/sentdm/models/sender_profile_billing_request.rbs +15 -0
  398. data/sig/sentdm/models/sender_profile_channels.rbs +30 -0
  399. data/sig/sentdm/models/sender_profile_create_params.rbs +78 -0
  400. data/sig/sentdm/models/sender_profile_delete_params.rbs +20 -0
  401. data/sig/sentdm/models/sender_profile_list_params.rbs +32 -0
  402. data/sig/sentdm/models/sender_profile_rcs.rbs +150 -0
  403. data/sig/sentdm/models/sender_profile_retrieve_params.rbs +20 -0
  404. data/sig/sentdm/models/sender_profile_sms.rbs +40 -0
  405. data/sig/sentdm/models/sender_profile_update_params.rbs +62 -0
  406. data/sig/sentdm/models/sender_profile_whatsapp.rbs +16 -0
  407. data/sig/sentdm/models/sender_profiles_list.rbs +31 -0
  408. data/sig/sentdm/models/tcr_brand_identity_status.rbs +17 -0
  409. data/sig/sentdm/models/tcr_brand_status.rbs +15 -0
  410. data/sig/sentdm/models/tcr_campaign_status.rbs +15 -0
  411. data/sig/sentdm/models/template_body.rbs +4 -43
  412. data/sig/sentdm/models/template_header.rbs +4 -31
  413. data/sig/sentdm/models/template_header_location.rbs +30 -0
  414. data/sig/sentdm/models/template_media_item.rbs +17 -0
  415. data/sig/sentdm/models/template_mms_body_content.rbs +28 -0
  416. data/sig/sentdm/models/template_ref.rbs +26 -0
  417. data/sig/sentdm/models/template_variable.rbs +4 -51
  418. data/sig/sentdm/models/template_variable_props.rbs +50 -0
  419. data/sig/sentdm/models/templates_list.rbs +29 -0
  420. data/sig/sentdm/models/users_list.rbs +31 -0
  421. data/sig/sentdm/models/voice/call.rbs +4 -49
  422. data/sig/sentdm/models/voice/call_leg.rbs +50 -0
  423. data/sig/sentdm/models/webhook_create_params.rbs +4 -28
  424. data/sig/sentdm/models/webhook_delivery.rbs +99 -0
  425. data/sig/sentdm/models/webhook_event_types_list.rbs +31 -0
  426. data/sig/sentdm/models/webhook_events_list.rbs +31 -0
  427. data/sig/sentdm/models/webhook_response.rbs +4 -28
  428. data/sig/sentdm/models/webhook_secret.rbs +15 -0
  429. data/sig/sentdm/models/webhook_sender_profile.rbs +27 -0
  430. data/sig/sentdm/models/webhook_sender_profile_config.rbs +27 -0
  431. data/sig/sentdm/models/webhook_test.rbs +19 -0
  432. data/sig/sentdm/models/webhook_update_params.rbs +4 -28
  433. data/sig/sentdm/models/webhooks_list.rbs +31 -0
  434. data/sig/sentdm/models.rbs +188 -0
  435. data/sig/sentdm/resources/channels/rcs.rbs +41 -0
  436. data/sig/sentdm/resources/channels/sms.rbs +44 -0
  437. data/sig/sentdm/resources/channels/whatsapp.rbs +18 -0
  438. data/sig/sentdm/resources/channels.rbs +11 -0
  439. data/sig/sentdm/resources/compliance.rbs +15 -0
  440. data/sig/sentdm/resources/conversations.rbs +2 -2
  441. data/sig/sentdm/resources/me.rbs +1 -1
  442. data/sig/sentdm/resources/messages.rbs +12 -4
  443. data/sig/sentdm/resources/numbers.rbs +1 -1
  444. data/sig/sentdm/resources/profiles.rbs +2 -2
  445. data/sig/sentdm/resources/sender_profiles.rbs +44 -0
  446. data/sig/sentdm/resources/users.rbs +1 -1
  447. data/sig/sentdm/resources/webhooks.rbs +6 -6
  448. metadata +362 -35
  449. data/lib/sentdm/models/me_retrieve_response.rb +0 -409
  450. data/lib/sentdm/models/message_retrieve_activities_response.rb +0 -175
  451. data/lib/sentdm/models/message_retrieve_status_response.rb +0 -477
  452. data/lib/sentdm/models/number_lookup_response.rb +0 -104
  453. data/lib/sentdm/models/profile_complete_response.rb +0 -74
  454. data/lib/sentdm/models/profile_list_response.rb +0 -65
  455. data/lib/sentdm/models/user_list_response.rb +0 -65
  456. data/lib/sentdm/models/webhook_list_event_types_response.rb +0 -65
  457. data/lib/sentdm/models/webhook_list_events_response.rb +0 -445
  458. data/rbi/sentdm/models/me_retrieve_response.rbi +0 -705
  459. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +0 -319
  460. data/rbi/sentdm/models/message_retrieve_status_response.rbi +0 -765
  461. data/rbi/sentdm/models/number_lookup_response.rbi +0 -166
  462. data/rbi/sentdm/models/profile_list_response.rbi +0 -128
  463. data/rbi/sentdm/models/user_list_response.rbi +0 -128
  464. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +0 -142
  465. data/rbi/sentdm/models/webhook_list_events_response.rbi +0 -647
  466. data/sig/sentdm/models/me_retrieve_response.rbs +0 -306
  467. data/sig/sentdm/models/message_retrieve_activities_response.rbs +0 -137
  468. data/sig/sentdm/models/message_retrieve_status_response.rbs +0 -341
  469. data/sig/sentdm/models/number_lookup_response.rbs +0 -100
  470. data/sig/sentdm/models/profile_complete_response.rbs +0 -55
  471. data/sig/sentdm/models/profile_list_response.rbs +0 -67
  472. data/sig/sentdm/models/user_list_response.rbs +0 -67
  473. data/sig/sentdm/models/webhook_list_event_types_response.rbs +0 -67
  474. data/sig/sentdm/models/webhook_list_events_response.rbs +0 -243
  475. data/sig/sentdm/models/webhook_rotate_secret_response.rbs +0 -51
  476. data/sig/sentdm/models/webhook_test_response.rbs +0 -55
@@ -0,0 +1,57 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Channels
6
+ class SuppliedDocument < Sentdm::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(Sentdm::Channels::SuppliedDocument, Sentdm::Internal::AnyHash)
10
+ end
11
+
12
+ # Identifier of the upload, for fetching it back through the documents endpoints.
13
+ sig { returns(T.nilable(String)) }
14
+ attr_accessor :document_id
15
+
16
+ sig { returns(T.nilable(String)) }
17
+ attr_accessor :file_name
18
+
19
+ # The catalog's name for this document, matching the requirement it satisfies.
20
+ sig { returns(T.nilable(String)) }
21
+ attr_reader :key
22
+
23
+ sig { params(key: String).void }
24
+ attr_writer :key
25
+
26
+ # A document a market asked for and has been given.
27
+ sig do
28
+ params(
29
+ document_id: T.nilable(String),
30
+ file_name: T.nilable(String),
31
+ key: String
32
+ ).returns(T.attached_class)
33
+ end
34
+ def self.new(
35
+ # Identifier of the upload, for fetching it back through the documents endpoints.
36
+ document_id: nil,
37
+ file_name: nil,
38
+ # The catalog's name for this document, matching the requirement it satisfies.
39
+ key: nil
40
+ )
41
+ end
42
+
43
+ sig do
44
+ override.returns(
45
+ {
46
+ document_id: T.nilable(String),
47
+ file_name: T.nilable(String),
48
+ key: String
49
+ }
50
+ )
51
+ end
52
+ def to_hash
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,172 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ WhatsappChannel = Channels::WhatsappChannel
6
+
7
+ module Channels
8
+ class WhatsappChannel < Sentdm::Internal::Type::BaseModel
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Sentdm::Channels::WhatsappChannel, Sentdm::Internal::AnyHash)
12
+ end
13
+
14
+ # Derived from the organization's shared-account listing, like SolutionId.
15
+ sig { returns(T.nilable(String)) }
16
+ attr_accessor :owner_business_id
17
+
18
+ # The Meta phone-number id the profile sends from, or null when the account is
19
+ # connected but no number has been named yet — which is what a provisioning status
20
+ # means here.
21
+ sig { returns(T.nilable(String)) }
22
+ attr_accessor :phone_number_id
23
+
24
+ # A sentence for reason_code, saying what to do where it is yours. Omitted while
25
+ # ACTIVE.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_accessor :reason
28
+
29
+ # Why the account is not ACTIVE, as a stable code: an ErrorCodes CHANNEL_xxx value
30
+ # such as CHANNEL_001 (something you owe) or CHANNEL_009 (under review). Switch on
31
+ # this rather than on reason. Omitted while ACTIVE. Read-only; when nothing more
32
+ # specific is known it is the generic reason for the status.
33
+ sig { returns(T.nilable(String)) }
34
+ attr_accessor :reason_code
35
+
36
+ # Derived, not echoed. The request no longer accepts this — it is read off the
37
+ # organization's shared-account listing at connect time and reported back so a
38
+ # caller can see which partnership the account actually arrived through.
39
+ sig { returns(T.nilable(String)) }
40
+ attr_accessor :solution_id
41
+
42
+ # Read-only. Never carries a token — the row holds that and it is not returned.
43
+ # ACTION_NEEDED when no account is connected or the account has no phone number:
44
+ # both are yours to do.
45
+ sig do
46
+ returns(
47
+ T.nilable(Sentdm::Channels::WhatsappChannel::Status::TaggedSymbol)
48
+ )
49
+ end
50
+ attr_accessor :status
51
+
52
+ sig { returns(T.nilable(String)) }
53
+ attr_accessor :waba_id
54
+
55
+ # The profile's WhatsApp account. Its status is Meta's verification state.
56
+ sig do
57
+ params(
58
+ owner_business_id: T.nilable(String),
59
+ phone_number_id: T.nilable(String),
60
+ reason: T.nilable(String),
61
+ reason_code: T.nilable(String),
62
+ solution_id: T.nilable(String),
63
+ status:
64
+ T.nilable(Sentdm::Channels::WhatsappChannel::Status::OrSymbol),
65
+ waba_id: T.nilable(String)
66
+ ).returns(T.attached_class)
67
+ end
68
+ def self.new(
69
+ # Derived from the organization's shared-account listing, like SolutionId.
70
+ owner_business_id: nil,
71
+ # The Meta phone-number id the profile sends from, or null when the account is
72
+ # connected but no number has been named yet — which is what a provisioning status
73
+ # means here.
74
+ phone_number_id: nil,
75
+ # A sentence for reason_code, saying what to do where it is yours. Omitted while
76
+ # ACTIVE.
77
+ reason: nil,
78
+ # Why the account is not ACTIVE, as a stable code: an ErrorCodes CHANNEL_xxx value
79
+ # such as CHANNEL_001 (something you owe) or CHANNEL_009 (under review). Switch on
80
+ # this rather than on reason. Omitted while ACTIVE. Read-only; when nothing more
81
+ # specific is known it is the generic reason for the status.
82
+ reason_code: nil,
83
+ # Derived, not echoed. The request no longer accepts this — it is read off the
84
+ # organization's shared-account listing at connect time and reported back so a
85
+ # caller can see which partnership the account actually arrived through.
86
+ solution_id: nil,
87
+ # Read-only. Never carries a token — the row holds that and it is not returned.
88
+ # ACTION_NEEDED when no account is connected or the account has no phone number:
89
+ # both are yours to do.
90
+ status: nil,
91
+ waba_id: nil
92
+ )
93
+ end
94
+
95
+ sig do
96
+ override.returns(
97
+ {
98
+ owner_business_id: T.nilable(String),
99
+ phone_number_id: T.nilable(String),
100
+ reason: T.nilable(String),
101
+ reason_code: T.nilable(String),
102
+ solution_id: T.nilable(String),
103
+ status:
104
+ T.nilable(
105
+ Sentdm::Channels::WhatsappChannel::Status::TaggedSymbol
106
+ ),
107
+ waba_id: T.nilable(String)
108
+ }
109
+ )
110
+ end
111
+ def to_hash
112
+ end
113
+
114
+ # Read-only. Never carries a token — the row holds that and it is not returned.
115
+ # ACTION_NEEDED when no account is connected or the account has no phone number:
116
+ # both are yours to do.
117
+ module Status
118
+ extend Sentdm::Internal::Type::Enum
119
+
120
+ TaggedSymbol =
121
+ T.type_alias do
122
+ T.all(Symbol, Sentdm::Channels::WhatsappChannel::Status)
123
+ end
124
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
125
+
126
+ # We are working on it and there is nothing for you to do — a number is being procured, or a registration is being assembled. Minutes to hours.
127
+ PROVISIONING =
128
+ T.let(
129
+ :PROVISIONING,
130
+ Sentdm::Channels::WhatsappChannel::Status::TaggedSymbol
131
+ )
132
+
133
+ # **Waiting on you.** Something the market asks for has not been supplied, a regulator rejected what was, or we have asked you to correct and resubmit your identity data. Nothing progresses until you act. For an SMS market, `GET /v3/channels/sms/{country}/{type}` names what it wants and `PATCH` on the same path supplies it — compliance values, documents and numbers alike.
134
+ ACTION_NEEDED =
135
+ T.let(
136
+ :ACTION_NEEDED,
137
+ Sentdm::Channels::WhatsappChannel::Status::TaggedSymbol
138
+ )
139
+
140
+ # With a regulator or carrier — filed, or assembled and queued for us to file — and their answer is what moves it, to `ACTIVE` or back to `ACTION_NEEDED`. Nothing on your side changes it. Days for SMS, weeks for RCS.
141
+ PENDING_REVIEW =
142
+ T.let(
143
+ :PENDING_REVIEW,
144
+ Sentdm::Channels::WhatsappChannel::Status::TaggedSymbol
145
+ )
146
+
147
+ # Can carry traffic now. A channel a sender profile runs on its organization's reads `ACTIVE` too — it sends, which is what the field is about.
148
+ ACTIVE =
149
+ T.let(
150
+ :ACTIVE,
151
+ Sentdm::Channels::WhatsappChannel::Status::TaggedSymbol
152
+ )
153
+
154
+ # **It had a working sender and no longer does** — the number was released, or the campaign it carried lapsed. Distinct from `PROVISIONING`, which means it has never sent yet: the same absence of a sender, opposite news. Sends will fail until it returns to `ACTIVE`.
155
+ INACTIVE =
156
+ T.let(
157
+ :INACTIVE,
158
+ Sentdm::Channels::WhatsappChannel::Status::TaggedSymbol
159
+ )
160
+
161
+ sig do
162
+ override.returns(
163
+ T::Array[Sentdm::Channels::WhatsappChannel::Status::TaggedSymbol]
164
+ )
165
+ end
166
+ def self.values
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
@@ -0,0 +1,104 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Channels
6
+ class WhatsappCreateParams < Sentdm::Internal::Type::BaseModel
7
+ extend Sentdm::Internal::Type::RequestParameters::Converter
8
+ include Sentdm::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Sentdm::Channels::WhatsappCreateParams,
14
+ Sentdm::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ # The Meta phone-number id of the number on WabaId, which assigns it to this
19
+ # profile as the number it sends from. It is not checked against the account here,
20
+ # so name the account's number; it is refused if another profile already uses it.
21
+ #
22
+ # Optional: omit it to connect the account and settle the number later. Nothing
23
+ # picks one on your behalf.
24
+ sig { returns(T.nilable(String)) }
25
+ attr_accessor :phone_number_id
26
+
27
+ # Sandbox flag - when true, the operation is simulated without side effects Useful
28
+ # for testing integrations without actual execution
29
+ sig { returns(T.nilable(T::Boolean)) }
30
+ attr_reader :sandbox
31
+
32
+ sig { params(sandbox: T::Boolean).void }
33
+ attr_writer :sandbox
34
+
35
+ # WhatsApp Business Account id — one of the accounts shared into your
36
+ # organization. Required: the organization holds one per client, and nothing but
37
+ # the caller says which is meant here.
38
+ sig { returns(T.nilable(String)) }
39
+ attr_reader :waba_id
40
+
41
+ sig { params(waba_id: String).void }
42
+ attr_writer :waba_id
43
+
44
+ sig { returns(T.nilable(String)) }
45
+ attr_reader :idempotency_key
46
+
47
+ sig { params(idempotency_key: String).void }
48
+ attr_writer :idempotency_key
49
+
50
+ sig { returns(T.nilable(String)) }
51
+ attr_reader :x_profile_id
52
+
53
+ sig { params(x_profile_id: String).void }
54
+ attr_writer :x_profile_id
55
+
56
+ sig do
57
+ params(
58
+ phone_number_id: T.nilable(String),
59
+ sandbox: T::Boolean,
60
+ waba_id: String,
61
+ idempotency_key: String,
62
+ x_profile_id: String,
63
+ request_options: Sentdm::RequestOptions::OrHash
64
+ ).returns(T.attached_class)
65
+ end
66
+ def self.new(
67
+ # The Meta phone-number id of the number on WabaId, which assigns it to this
68
+ # profile as the number it sends from. It is not checked against the account here,
69
+ # so name the account's number; it is refused if another profile already uses it.
70
+ #
71
+ # Optional: omit it to connect the account and settle the number later. Nothing
72
+ # picks one on your behalf.
73
+ phone_number_id: nil,
74
+ # Sandbox flag - when true, the operation is simulated without side effects Useful
75
+ # for testing integrations without actual execution
76
+ sandbox: nil,
77
+ # WhatsApp Business Account id — one of the accounts shared into your
78
+ # organization. Required: the organization holds one per client, and nothing but
79
+ # the caller says which is meant here.
80
+ waba_id: nil,
81
+ idempotency_key: nil,
82
+ x_profile_id: nil,
83
+ request_options: {}
84
+ )
85
+ end
86
+
87
+ sig do
88
+ override.returns(
89
+ {
90
+ phone_number_id: T.nilable(String),
91
+ sandbox: T::Boolean,
92
+ waba_id: String,
93
+ idempotency_key: String,
94
+ x_profile_id: String,
95
+ request_options: Sentdm::RequestOptions
96
+ }
97
+ )
98
+ end
99
+ def to_hash
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,151 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ChannelsState < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Sentdm::ChannelsState, Sentdm::Internal::AnyHash) }
8
+
9
+ # Which customer these channels belong to — the key's own, or the profile named in
10
+ # x-profile-id.
11
+ #
12
+ # Same reason the brand carries one: as the response to /v3/channels there is no
13
+ # other id in the document, and under x-profile-id this is the profile the call
14
+ # resolved to rather than the caller. Absent when nested inside a sender profile,
15
+ # whose own id already says whose they are.
16
+ sig { returns(T.nilable(String)) }
17
+ attr_accessor :customer_id
18
+
19
+ # The markets this profile can send MMS in, one entry per country, or empty when
20
+ # none.
21
+ #
22
+ # Appears alongside sms rather than replacing an entry in it: the two are separate
23
+ # senders on the same number and a caller needs to see both — a market can be live
24
+ # for SMS while its MMS row is still provisioning, or MMS-incapable entirely
25
+ # because the market's sender-type SKU does not carry it.
26
+ sig { returns(T.nilable(T::Array[Sentdm::MmsMarket])) }
27
+ attr_reader :mms
28
+
29
+ sig { params(mms: T::Array[Sentdm::MmsMarket::OrHash]).void }
30
+ attr_writer :mms
31
+
32
+ # An RCS agent as its owner sees it: the order form back, plus where the
33
+ # submission stands.
34
+ #
35
+ # Not RcsSenderResponse. That one is the admin projection and carries the pipeline
36
+ # we track about a customer's request — internalStatus, statusReason, isLaunched —
37
+ # and the S3 keys behind the assets. None of that is the customer's to read: an
38
+ # internal status is a note to ourselves, and an S3 key is a storage detail that
39
+ # would become a contract the moment it was published.
40
+ #
41
+ # What is here is what the caller sent, in the names it sent them under, plus the
42
+ # three things only we can answer: the record's id, its status, and the number it
43
+ # sends from. So a read after a write shows the form as stored rather than as
44
+ # echoed.
45
+ sig { returns(T.nilable(Sentdm::Channels::RcsAgent)) }
46
+ attr_reader :rcs
47
+
48
+ sig { params(rcs: T.nilable(Sentdm::Channels::RcsAgent::OrHash)).void }
49
+ attr_writer :rcs
50
+
51
+ sig { returns(T.nilable(T::Array[Sentdm::Channels::SMSMarket])) }
52
+ attr_reader :sms
53
+
54
+ sig { params(sms: T::Array[Sentdm::Channels::SMSMarket::OrHash]).void }
55
+ attr_writer :sms
56
+
57
+ # The numbers this profile carries phone calls on, one entry per number, or empty
58
+ # when none. Voice is per number like an SMS market is per country: each number is
59
+ # its own channel row, turned on and off on its own, and one of them is the line
60
+ # app-originated calls fall back to.
61
+ sig { returns(T.nilable(T::Array[Sentdm::Channels::VoiceNumber])) }
62
+ attr_reader :voice
63
+
64
+ sig do
65
+ params(voice: T::Array[Sentdm::Channels::VoiceNumber::OrHash]).void
66
+ end
67
+ attr_writer :voice
68
+
69
+ # The profile's WhatsApp account. Its status is Meta's verification state.
70
+ sig { returns(T.nilable(Sentdm::Channels::WhatsappChannel)) }
71
+ attr_reader :whatsapp
72
+
73
+ sig do
74
+ params(
75
+ whatsapp: T.nilable(Sentdm::Channels::WhatsappChannel::OrHash)
76
+ ).void
77
+ end
78
+ attr_writer :whatsapp
79
+
80
+ # The channels a profile sends on. SMS is a list because a profile can send in
81
+ # several markets; WhatsApp and RCS are single, because a profile has one business
82
+ # account and one agent.
83
+ sig do
84
+ params(
85
+ customer_id: T.nilable(String),
86
+ mms: T::Array[Sentdm::MmsMarket::OrHash],
87
+ rcs: T.nilable(Sentdm::Channels::RcsAgent::OrHash),
88
+ sms: T::Array[Sentdm::Channels::SMSMarket::OrHash],
89
+ voice: T::Array[Sentdm::Channels::VoiceNumber::OrHash],
90
+ whatsapp: T.nilable(Sentdm::Channels::WhatsappChannel::OrHash)
91
+ ).returns(T.attached_class)
92
+ end
93
+ def self.new(
94
+ # Which customer these channels belong to — the key's own, or the profile named in
95
+ # x-profile-id.
96
+ #
97
+ # Same reason the brand carries one: as the response to /v3/channels there is no
98
+ # other id in the document, and under x-profile-id this is the profile the call
99
+ # resolved to rather than the caller. Absent when nested inside a sender profile,
100
+ # whose own id already says whose they are.
101
+ customer_id: nil,
102
+ # The markets this profile can send MMS in, one entry per country, or empty when
103
+ # none.
104
+ #
105
+ # Appears alongside sms rather than replacing an entry in it: the two are separate
106
+ # senders on the same number and a caller needs to see both — a market can be live
107
+ # for SMS while its MMS row is still provisioning, or MMS-incapable entirely
108
+ # because the market's sender-type SKU does not carry it.
109
+ mms: nil,
110
+ # An RCS agent as its owner sees it: the order form back, plus where the
111
+ # submission stands.
112
+ #
113
+ # Not RcsSenderResponse. That one is the admin projection and carries the pipeline
114
+ # we track about a customer's request — internalStatus, statusReason, isLaunched —
115
+ # and the S3 keys behind the assets. None of that is the customer's to read: an
116
+ # internal status is a note to ourselves, and an S3 key is a storage detail that
117
+ # would become a contract the moment it was published.
118
+ #
119
+ # What is here is what the caller sent, in the names it sent them under, plus the
120
+ # three things only we can answer: the record's id, its status, and the number it
121
+ # sends from. So a read after a write shows the form as stored rather than as
122
+ # echoed.
123
+ rcs: nil,
124
+ sms: nil,
125
+ # The numbers this profile carries phone calls on, one entry per number, or empty
126
+ # when none. Voice is per number like an SMS market is per country: each number is
127
+ # its own channel row, turned on and off on its own, and one of them is the line
128
+ # app-originated calls fall back to.
129
+ voice: nil,
130
+ # The profile's WhatsApp account. Its status is Meta's verification state.
131
+ whatsapp: nil
132
+ )
133
+ end
134
+
135
+ sig do
136
+ override.returns(
137
+ {
138
+ customer_id: T.nilable(String),
139
+ mms: T::Array[Sentdm::MmsMarket],
140
+ rcs: T.nilable(Sentdm::Channels::RcsAgent),
141
+ sms: T::Array[Sentdm::Channels::SMSMarket],
142
+ voice: T::Array[Sentdm::Channels::VoiceNumber],
143
+ whatsapp: T.nilable(Sentdm::Channels::WhatsappChannel)
144
+ }
145
+ )
146
+ end
147
+ def to_hash
148
+ end
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,56 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ComplianceAttachmentTemplate < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::ComplianceAttachmentTemplate, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # The multipart field name to attach the file under.
12
+ sig { returns(T.nilable(String)) }
13
+ attr_reader :field_name
14
+
15
+ sig { params(field_name: String).void }
16
+ attr_writer :field_name
17
+
18
+ sig { returns(T.nilable(String)) }
19
+ attr_accessor :label
20
+
21
+ sig { returns(T.nilable(T::Boolean)) }
22
+ attr_reader :required
23
+
24
+ sig { params(required: T::Boolean).void }
25
+ attr_writer :required
26
+
27
+ # A file this market wants, and the multipart field to send it as.
28
+ #
29
+ # Separate from compliance because a file is not JSON: the channel call accepts
30
+ # multipart, and each file is named after the key it satisfies. Listing documents
31
+ # among the JSON entries would describe a request nobody could send.
32
+ sig do
33
+ params(
34
+ field_name: String,
35
+ label: T.nilable(String),
36
+ required: T::Boolean
37
+ ).returns(T.attached_class)
38
+ end
39
+ def self.new(
40
+ # The multipart field name to attach the file under.
41
+ field_name: nil,
42
+ label: nil,
43
+ required: nil
44
+ )
45
+ end
46
+
47
+ sig do
48
+ override.returns(
49
+ { field_name: String, label: T.nilable(String), required: T::Boolean }
50
+ )
51
+ end
52
+ def to_hash
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,149 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ComplianceRequirement < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::ComplianceRequirement, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # Refinement of type where the market demands a specific shape, e.g. e164, url,
12
+ # email, iso3166_alpha2, csv_keywords.
13
+ sig { returns(T.nilable(String)) }
14
+ attr_accessor :format_
15
+
16
+ # Shape of each entry, when this requirement is a list of objects rather than of
17
+ # scalars.
18
+ #
19
+ # The compliance value stays null in the setup body like every other blank — a
20
+ # body that carries a half-filled object is one the endpoint refuses, which would
21
+ # break the promise that the published body can be sent as it stands. So the shape
22
+ # is described here instead, and each entry the caller composes has these keys.
23
+ sig { returns(T.nilable(T::Array[Sentdm::ComplianceRequirement])) }
24
+ attr_accessor :item_fields
25
+
26
+ # Key to use in the compliance map.
27
+ sig { returns(T.nilable(String)) }
28
+ attr_reader :key
29
+
30
+ sig { params(key: String).void }
31
+ attr_writer :key
32
+
33
+ # Human label, suitable for a form field.
34
+ sig { returns(T.nilable(String)) }
35
+ attr_accessor :label
36
+
37
+ # Most entries this value accepts, where the market caps it.
38
+ sig { returns(T.nilable(Integer)) }
39
+ attr_accessor :max_items
40
+
41
+ # Shortest acceptable value, where the market sets one. TCR refuses a consent
42
+ # narrative under 40 characters, and finding that out at submission time is the
43
+ # round trip this exists to save.
44
+ sig { returns(T.nilable(Integer)) }
45
+ attr_accessor :min_length
46
+
47
+ # Why the market asks for this.
48
+ sig { returns(T.nilable(String)) }
49
+ attr_accessor :notes
50
+
51
+ # Accepted values, when the type is an enum or a constrained array.
52
+ sig { returns(T.nilable(T::Array[String])) }
53
+ attr_accessor :options
54
+
55
+ # Whether the market always demands this value.
56
+ sig { returns(T.nilable(T::Boolean)) }
57
+ attr_reader :required
58
+
59
+ sig { params(required: T::Boolean).void }
60
+ attr_writer :required
61
+
62
+ # Condition that makes this value required, when it is only required in some cases
63
+ # — e.g. brand.entity_type == PUBLIC_PROFIT. Evaluate it against your own payload
64
+ # to know whether to collect the field.
65
+ sig { returns(T.nilable(String)) }
66
+ attr_accessor :required_when
67
+
68
+ # Value type: string, number, boolean, date, enum, object, array or document.
69
+ sig { returns(T.nilable(String)) }
70
+ attr_reader :type
71
+
72
+ sig { params(type: String).void }
73
+ attr_writer :type
74
+
75
+ # One value a market expects in a channel call's compliance map.
76
+ sig do
77
+ params(
78
+ format_: T.nilable(String),
79
+ item_fields: T.nilable(T::Array[Sentdm::ComplianceRequirement]),
80
+ key: String,
81
+ label: T.nilable(String),
82
+ max_items: T.nilable(Integer),
83
+ min_length: T.nilable(Integer),
84
+ notes: T.nilable(String),
85
+ options: T.nilable(T::Array[String]),
86
+ required: T::Boolean,
87
+ required_when: T.nilable(String),
88
+ type: String
89
+ ).returns(T.attached_class)
90
+ end
91
+ def self.new(
92
+ # Refinement of type where the market demands a specific shape, e.g. e164, url,
93
+ # email, iso3166_alpha2, csv_keywords.
94
+ format_: nil,
95
+ # Shape of each entry, when this requirement is a list of objects rather than of
96
+ # scalars.
97
+ #
98
+ # The compliance value stays null in the setup body like every other blank — a
99
+ # body that carries a half-filled object is one the endpoint refuses, which would
100
+ # break the promise that the published body can be sent as it stands. So the shape
101
+ # is described here instead, and each entry the caller composes has these keys.
102
+ item_fields: nil,
103
+ # Key to use in the compliance map.
104
+ key: nil,
105
+ # Human label, suitable for a form field.
106
+ label: nil,
107
+ # Most entries this value accepts, where the market caps it.
108
+ max_items: nil,
109
+ # Shortest acceptable value, where the market sets one. TCR refuses a consent
110
+ # narrative under 40 characters, and finding that out at submission time is the
111
+ # round trip this exists to save.
112
+ min_length: nil,
113
+ # Why the market asks for this.
114
+ notes: nil,
115
+ # Accepted values, when the type is an enum or a constrained array.
116
+ options: nil,
117
+ # Whether the market always demands this value.
118
+ required: nil,
119
+ # Condition that makes this value required, when it is only required in some cases
120
+ # — e.g. brand.entity_type == PUBLIC_PROFIT. Evaluate it against your own payload
121
+ # to know whether to collect the field.
122
+ required_when: nil,
123
+ # Value type: string, number, boolean, date, enum, object, array or document.
124
+ type: nil
125
+ )
126
+ end
127
+
128
+ sig do
129
+ override.returns(
130
+ {
131
+ format_: T.nilable(String),
132
+ item_fields: T.nilable(T::Array[Sentdm::ComplianceRequirement]),
133
+ key: String,
134
+ label: T.nilable(String),
135
+ max_items: T.nilable(Integer),
136
+ min_length: T.nilable(Integer),
137
+ notes: T.nilable(String),
138
+ options: T.nilable(T::Array[String]),
139
+ required: T::Boolean,
140
+ required_when: T.nilable(String),
141
+ type: String
142
+ }
143
+ )
144
+ end
145
+ def to_hash
146
+ end
147
+ end
148
+ end
149
+ end