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
@@ -63,6 +63,15 @@ module Sentdm
63
63
  sig { returns(T.nilable(String)) }
64
64
  attr_accessor :help_message
65
65
 
66
+ # Whether the campaign is the organization's, which the profile runs on, rather
67
+ # than one of the profile's own. A profile running on its organization's campaign
68
+ # can hold campaigns of its own beside it, and the list returns both.
69
+ sig { returns(T.nilable(T::Boolean)) }
70
+ attr_reader :is_inherited
71
+
72
+ sig { params(is_inherited: T::Boolean).void }
73
+ attr_writer :is_inherited
74
+
66
75
  sig { returns(T.nilable(String)) }
67
76
  attr_accessor :message_flow
68
77
 
@@ -87,11 +96,7 @@ module Sentdm
87
96
  sig { returns(T.nilable(String)) }
88
97
  attr_accessor :privacy_policy_link
89
98
 
90
- sig do
91
- returns(
92
- T.nilable(Sentdm::Profiles::BrandCampaign::Status::TaggedSymbol)
93
- )
94
- end
99
+ sig { returns(T.nilable(Sentdm::TcrCampaignStatus::TaggedSymbol)) }
95
100
  attr_accessor :status
96
101
 
97
102
  sig { returns(T.nilable(Time)) }
@@ -156,6 +161,7 @@ module Sentdm
156
161
  has_submission_transaction: T::Boolean,
157
162
  help_keywords: T.nilable(String),
158
163
  help_message: T.nilable(String),
164
+ is_inherited: T::Boolean,
159
165
  message_flow: T.nilable(String),
160
166
  name: String,
161
167
  optin_keywords: T.nilable(String),
@@ -163,8 +169,7 @@ module Sentdm
163
169
  optout_keywords: T.nilable(String),
164
170
  optout_message: T.nilable(String),
165
171
  privacy_policy_link: T.nilable(String),
166
- status:
167
- T.nilable(Sentdm::Profiles::BrandCampaign::Status::OrSymbol),
172
+ status: T.nilable(Sentdm::TcrCampaignStatus::OrSymbol),
168
173
  submitted_at: T.nilable(Time),
169
174
  submitted_to_tcr: T::Boolean,
170
175
  tcr_campaign_id: T.nilable(String),
@@ -192,6 +197,10 @@ module Sentdm
192
197
  has_submission_transaction: nil,
193
198
  help_keywords: nil,
194
199
  help_message: nil,
200
+ # Whether the campaign is the organization's, which the profile runs on, rather
201
+ # than one of the profile's own. A profile running on its organization's campaign
202
+ # can hold campaigns of its own beside it, and the list returns both.
203
+ is_inherited: nil,
195
204
  message_flow: nil,
196
205
  name: nil,
197
206
  optin_keywords: nil,
@@ -234,6 +243,7 @@ module Sentdm
234
243
  has_submission_transaction: T::Boolean,
235
244
  help_keywords: T.nilable(String),
236
245
  help_message: T.nilable(String),
246
+ is_inherited: T::Boolean,
237
247
  message_flow: T.nilable(String),
238
248
  name: String,
239
249
  optin_keywords: T.nilable(String),
@@ -241,10 +251,7 @@ module Sentdm
241
251
  optout_keywords: T.nilable(String),
242
252
  optout_message: T.nilable(String),
243
253
  privacy_policy_link: T.nilable(String),
244
- status:
245
- T.nilable(
246
- Sentdm::Profiles::BrandCampaign::Status::TaggedSymbol
247
- ),
254
+ status: T.nilable(Sentdm::TcrCampaignStatus::TaggedSymbol),
248
255
  submitted_at: T.nilable(Time),
249
256
  submitted_to_tcr: T::Boolean,
250
257
  tcr_campaign_id: T.nilable(String),
@@ -259,40 +266,6 @@ module Sentdm
259
266
  end
260
267
  def to_hash
261
268
  end
262
-
263
- module Status
264
- extend Sentdm::Internal::Type::Enum
265
-
266
- TaggedSymbol =
267
- T.type_alias do
268
- T.all(Symbol, Sentdm::Profiles::BrandCampaign::Status)
269
- end
270
- OrSymbol = T.type_alias { T.any(Symbol, String) }
271
-
272
- SENT_CREATED =
273
- T.let(
274
- :SENT_CREATED,
275
- Sentdm::Profiles::BrandCampaign::Status::TaggedSymbol
276
- )
277
- ACTIVE =
278
- T.let(
279
- :ACTIVE,
280
- Sentdm::Profiles::BrandCampaign::Status::TaggedSymbol
281
- )
282
- EXPIRED =
283
- T.let(
284
- :EXPIRED,
285
- Sentdm::Profiles::BrandCampaign::Status::TaggedSymbol
286
- )
287
-
288
- sig do
289
- override.returns(
290
- T::Array[Sentdm::Profiles::BrandCampaign::Status::TaggedSymbol]
291
- )
292
- end
293
- def self.values
294
- end
295
- end
296
269
  end
297
270
  end
298
271
  end
@@ -0,0 +1,50 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ProfilesList < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Sentdm::ProfilesList, Sentdm::Internal::AnyHash) }
8
+
9
+ # Pagination metadata for list responses
10
+ sig { returns(T.nilable(Sentdm::PaginationMeta)) }
11
+ attr_reader :pagination
12
+
13
+ sig { params(pagination: Sentdm::PaginationMeta::OrHash).void }
14
+ attr_writer :pagination
15
+
16
+ # The profiles on this page.
17
+ sig { returns(T.nilable(T::Array[Sentdm::ProfileDetail])) }
18
+ attr_reader :profiles
19
+
20
+ sig { params(profiles: T::Array[Sentdm::ProfileDetail::OrHash]).void }
21
+ attr_writer :profiles
22
+
23
+ # The profiles in the organization.
24
+ sig do
25
+ params(
26
+ pagination: Sentdm::PaginationMeta::OrHash,
27
+ profiles: T::Array[Sentdm::ProfileDetail::OrHash]
28
+ ).returns(T.attached_class)
29
+ end
30
+ def self.new(
31
+ # Pagination metadata for list responses
32
+ pagination: nil,
33
+ # The profiles on this page.
34
+ profiles: nil
35
+ )
36
+ end
37
+
38
+ sig do
39
+ override.returns(
40
+ {
41
+ pagination: Sentdm::PaginationMeta,
42
+ profiles: T::Array[Sentdm::ProfileDetail]
43
+ }
44
+ )
45
+ end
46
+ def to_hash
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,204 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class SenderProfile < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Sentdm::SenderProfile, 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
+ # The API key for this profile.
16
+ #
17
+ # Returned by create and by nothing else. It is shown once; a read that repeated
18
+ # it would turn every profile list into a credential dump and put the key into any
19
+ # log or cache that keeps a response body.
20
+ #
21
+ # Omitted rather than null on a read. A key field that is always present and
22
+ # always empty suggests it could be populated, which is an invitation to populate
23
+ # it; absent says there is nothing to look for. Doing it with a serializer
24
+ # condition rather than a second response type keeps create and read on one shape,
25
+ # which is what stops them drifting.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_accessor :api_key
28
+
29
+ # Who pays for a sender profile's traffic, as a read reports it.
30
+ #
31
+ # Its own type, field for field the same as BillingRequest. Same reason as the
32
+ # brand: a response is not a request, whatever it carries.
33
+ sig { returns(T.nilable(Sentdm::SenderProfileBilling)) }
34
+ attr_reader :billing
35
+
36
+ sig do
37
+ params(billing: T.nilable(Sentdm::SenderProfileBilling::OrHash)).void
38
+ end
39
+ attr_writer :billing
40
+
41
+ # The channels a profile sends on. SMS is a list because a profile can send in
42
+ # several markets; WhatsApp and RCS are single, because a profile has one business
43
+ # account and one agent.
44
+ sig { returns(T.nilable(Sentdm::ChannelsState)) }
45
+ attr_reader :channels
46
+
47
+ sig { params(channels: T.nilable(Sentdm::ChannelsState::OrHash)).void }
48
+ attr_writer :channels
49
+
50
+ # What a market has been given: the identity it registers under, its programme,
51
+ # and any documents attached.
52
+ #
53
+ # What it does not carry is what the market asks for. That is the subject of GET
54
+ # /v3/compliance/requirements, and it is the same answer for every caller — a
55
+ # description of what a compliance regime wants, not a record of one customer's
56
+ # progress through it. It was reported here as well for a while, which put the
57
+ # same array in six response shapes and left a caller deciding which of two
58
+ # sources to believe.
59
+ #
60
+ # Present on a list read for markets that register (carrying brand and campaign),
61
+ # but with documents absent — documents are not fetched for a list, because a
62
+ # catalog lookup and a document read per market would multiply across a page.
63
+ # Absent documents is distinct from an empty list: absent says they were not
64
+ # fetched; empty says the market has been given none. The parent object is null
65
+ # only when the market registers with nobody and compliance was not computed —
66
+ # nothing to show at all.
67
+ sig { returns(T.nilable(Sentdm::Channels::SuppliedCompliance)) }
68
+ attr_reader :compliance
69
+
70
+ sig do
71
+ params(
72
+ compliance: T.nilable(Sentdm::Channels::SuppliedCompliance::OrHash)
73
+ ).void
74
+ end
75
+ attr_writer :compliance
76
+
77
+ sig { returns(T.nilable(Time)) }
78
+ attr_reader :created_at
79
+
80
+ sig { params(created_at: Time).void }
81
+ attr_writer :created_at
82
+
83
+ sig { returns(T.nilable(String)) }
84
+ attr_accessor :description
85
+
86
+ sig { returns(T.nilable(String)) }
87
+ attr_reader :name
88
+
89
+ sig { params(name: String).void }
90
+ attr_writer :name
91
+
92
+ # Who is notified about this profile's events: ORGANIZATION, SENDER_PROFILE, or
93
+ # ORGANIZATION_AND_SENDER_PROFILE. Always present — a profile that never chose
94
+ # reports as ORGANIZATION, the value a create would send to get the default
95
+ # behaviour.
96
+ sig { returns(T.nilable(String)) }
97
+ attr_accessor :notifications
98
+
99
+ sig { returns(T.nilable(String)) }
100
+ attr_accessor :organization_id
101
+
102
+ sig { returns(T.nilable(String)) }
103
+ attr_accessor :short_name
104
+
105
+ # A sender profile as the API reports it — the same document the create call
106
+ # accepts, plus the read-only facts it cannot: each market's status and what it
107
+ # still owes.
108
+ #
109
+ # No status at the profile, brand or campaign level. Brand and campaign are
110
+ # identity, and identity has no lifecycle. What has one is the registration of a
111
+ # sender in a market, and the approval of a channel — so status lives there, where
112
+ # it says which specific thing is blocked rather than flattening several answers
113
+ # into one.
114
+ sig do
115
+ params(
116
+ id: String,
117
+ api_key: T.nilable(String),
118
+ billing: T.nilable(Sentdm::SenderProfileBilling::OrHash),
119
+ channels: T.nilable(Sentdm::ChannelsState::OrHash),
120
+ compliance: T.nilable(Sentdm::Channels::SuppliedCompliance::OrHash),
121
+ created_at: Time,
122
+ description: T.nilable(String),
123
+ name: String,
124
+ notifications: T.nilable(String),
125
+ organization_id: T.nilable(String),
126
+ short_name: T.nilable(String)
127
+ ).returns(T.attached_class)
128
+ end
129
+ def self.new(
130
+ id: nil,
131
+ # The API key for this profile.
132
+ #
133
+ # Returned by create and by nothing else. It is shown once; a read that repeated
134
+ # it would turn every profile list into a credential dump and put the key into any
135
+ # log or cache that keeps a response body.
136
+ #
137
+ # Omitted rather than null on a read. A key field that is always present and
138
+ # always empty suggests it could be populated, which is an invitation to populate
139
+ # it; absent says there is nothing to look for. Doing it with a serializer
140
+ # condition rather than a second response type keeps create and read on one shape,
141
+ # which is what stops them drifting.
142
+ api_key: nil,
143
+ # Who pays for a sender profile's traffic, as a read reports it.
144
+ #
145
+ # Its own type, field for field the same as BillingRequest. Same reason as the
146
+ # brand: a response is not a request, whatever it carries.
147
+ billing: nil,
148
+ # The channels a profile sends on. SMS is a list because a profile can send in
149
+ # several markets; WhatsApp and RCS are single, because a profile has one business
150
+ # account and one agent.
151
+ channels: nil,
152
+ # What a market has been given: the identity it registers under, its programme,
153
+ # and any documents attached.
154
+ #
155
+ # What it does not carry is what the market asks for. That is the subject of GET
156
+ # /v3/compliance/requirements, and it is the same answer for every caller — a
157
+ # description of what a compliance regime wants, not a record of one customer's
158
+ # progress through it. It was reported here as well for a while, which put the
159
+ # same array in six response shapes and left a caller deciding which of two
160
+ # sources to believe.
161
+ #
162
+ # Present on a list read for markets that register (carrying brand and campaign),
163
+ # but with documents absent — documents are not fetched for a list, because a
164
+ # catalog lookup and a document read per market would multiply across a page.
165
+ # Absent documents is distinct from an empty list: absent says they were not
166
+ # fetched; empty says the market has been given none. The parent object is null
167
+ # only when the market registers with nobody and compliance was not computed —
168
+ # nothing to show at all.
169
+ compliance: nil,
170
+ created_at: nil,
171
+ description: nil,
172
+ name: nil,
173
+ # Who is notified about this profile's events: ORGANIZATION, SENDER_PROFILE, or
174
+ # ORGANIZATION_AND_SENDER_PROFILE. Always present — a profile that never chose
175
+ # reports as ORGANIZATION, the value a create would send to get the default
176
+ # behaviour.
177
+ notifications: nil,
178
+ organization_id: nil,
179
+ short_name: nil
180
+ )
181
+ end
182
+
183
+ sig do
184
+ override.returns(
185
+ {
186
+ id: String,
187
+ api_key: T.nilable(String),
188
+ billing: T.nilable(Sentdm::SenderProfileBilling),
189
+ channels: T.nilable(Sentdm::ChannelsState),
190
+ compliance: T.nilable(Sentdm::Channels::SuppliedCompliance),
191
+ created_at: Time,
192
+ description: T.nilable(String),
193
+ name: String,
194
+ notifications: T.nilable(String),
195
+ organization_id: T.nilable(String),
196
+ short_name: T.nilable(String)
197
+ }
198
+ )
199
+ end
200
+ def to_hash
201
+ end
202
+ end
203
+ end
204
+ end
@@ -0,0 +1,34 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class SenderProfileBilling < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::SenderProfileBilling, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # Whether the organization pays, rather than the profile.
12
+ sig { returns(T.nilable(T::Boolean)) }
13
+ attr_reader :inherit
14
+
15
+ sig { params(inherit: T::Boolean).void }
16
+ attr_writer :inherit
17
+
18
+ # Who pays for a sender profile's traffic, as a read reports it.
19
+ #
20
+ # Its own type, field for field the same as BillingRequest. Same reason as the
21
+ # brand: a response is not a request, whatever it carries.
22
+ sig { params(inherit: T::Boolean).returns(T.attached_class) }
23
+ def self.new(
24
+ # Whether the organization pays, rather than the profile.
25
+ inherit: nil
26
+ )
27
+ end
28
+
29
+ sig { override.returns({ inherit: T::Boolean }) }
30
+ def to_hash
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,46 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class SenderProfileBillingRequest < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::SenderProfileBillingRequest, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # Whether the parent organization pays. false is the profile paying for itself.
12
+ sig { returns(T.nilable(T::Boolean)) }
13
+ attr_reader :inherit
14
+
15
+ sig { params(inherit: T::Boolean).void }
16
+ attr_writer :inherit
17
+
18
+ # Who pays for what a sender profile sends.
19
+ #
20
+ # Ownership reads the same way as BrandRequest and CampaignRequest: inherit: true
21
+ # is the organization paying; inherit: false (or an empty block) is the profile
22
+ # paying for itself.
23
+ #
24
+ # An absent block is the one place billing differs from brand and campaign: a
25
+ # profile still has to be paid for, so omitting billing stores
26
+ # ProfileAndOrganizationBilling — the profile pays first and its organization
27
+ # covers what the profile's balance cannot (see ResolveStored). { "name": "..." }
28
+ # stays a complete request.
29
+ #
30
+ # Billing carries no fields of its own yet, so a profile paying for itself is {
31
+ # "inherit": false } — or an empty block, which means the same. That is thinner
32
+ # than brand and campaign, where supplying data is the act of owning; it becomes
33
+ # ordinary the moment billing gains a contact or a payment method to carry.
34
+ sig { params(inherit: T::Boolean).returns(T.attached_class) }
35
+ def self.new(
36
+ # Whether the parent organization pays. false is the profile paying for itself.
37
+ inherit: nil
38
+ )
39
+ end
40
+
41
+ sig { override.returns({ inherit: T::Boolean }) }
42
+ def to_hash
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,163 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class SenderProfileChannels < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::SenderProfileChannels, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # Asks for an RCS agent of the profile's own, optionally with the full order form
12
+ # inline.
13
+ #
14
+ # Two modes, distinguished by whether any field is populated: "rcs": {} — intent
15
+ # only. Records that the profile wants its own agent; the order form is submitted
16
+ # separately through POST /v3/channels/rcs once the fields are ready. "rcs": {
17
+ # ...fields... } — full form. All required fields must be present; the agent is
18
+ # created alongside the profile in one call. Omitting opt_in_screenshot_url is
19
+ # allowed.
20
+ sig { returns(T.nilable(Sentdm::SenderProfileRcs)) }
21
+ attr_reader :rcs
22
+
23
+ sig { params(rcs: T.nilable(Sentdm::SenderProfileRcs::OrHash)).void }
24
+ attr_writer :rcs
25
+
26
+ # One SMS market a profile sends in — a country and a sender type.
27
+ #
28
+ # A profile may have several. It is a tenant, not a market: a business sending to
29
+ # two countries is one customer of yours, and forcing it into two profiles would
30
+ # give it two API keys, two inboxes and two contact lists for one business. The
31
+ # platform already assumes many — CustomerChannelProviders is unique on (customer,
32
+ # channel, iso, number).
33
+ #
34
+ # No mode: a sender is the profile's own or it has none. Listing a market is the
35
+ # request for one.
36
+ #
37
+ # Also the discriminator for everything else: the compliance catalog is keyed on
38
+ # (country, number type), and that pair decides which fields brand accepts and
39
+ # what compliance is asked for.
40
+ sig { returns(T.nilable(Sentdm::SenderProfileSMS)) }
41
+ attr_reader :sms
42
+
43
+ sig { params(sms: T.nilable(Sentdm::SenderProfileSMS::OrHash)).void }
44
+ attr_writer :sms
45
+
46
+ # The profile's own WhatsApp Business Account, named by the two identifiers the
47
+ # organization cannot answer for you.
48
+ #
49
+ # No mode: a profile's WABA is its own or it has none. Sharing the organization's
50
+ # would mean sharing its inbox and its throughput, which makes the two
51
+ # indistinguishable to a recipient — so inheriting is not offered rather than
52
+ # refused.
53
+ #
54
+ # Everything derivable is derived. Whenever this block is present, the solution
55
+ # the account arrived through, the client business portfolio that owns it, the
56
+ # access token and that token's expiry are all resolved from the organization by
57
+ # IPartnerSolutionService.ResolveAccountCredentialsAsync — the first two off the
58
+ # org's shared-account listing, the token minted against the org's own solution.
59
+ # They were previously asked for and are no longer accepted: solution_id and
60
+ # owner_business_id are Meta's answer about provenance, so taking them from the
61
+ # caller let a request assert a partnership Meta disagreed with, and the listing
62
+ # has to be consulted regardless because it is what proves the account is one this
63
+ # organization may reach.
64
+ #
65
+ # No access token, and there never was one here: it is minted per client business
66
+ # portfolio and rotates roughly every sixty days, so a pasted value would be stale
67
+ # before it was useful. Asking a customer to mint a System User token in Meta
68
+ # Business Manager is skilled work in a console they were never meant to see, and
69
+ # it would say nothing about which solution the account came from or when it is
70
+ # revoked.
71
+ sig { returns(T.nilable(Sentdm::SenderProfileWhatsapp)) }
72
+ attr_reader :whatsapp
73
+
74
+ sig do
75
+ params(whatsapp: T.nilable(Sentdm::SenderProfileWhatsapp::OrHash)).void
76
+ end
77
+ attr_writer :whatsapp
78
+
79
+ # The channels the profile sends on. Each is independently the profile's own or
80
+ # absent — none can be inherited, so none carries a mode and presence is the whole
81
+ # of the request.
82
+ #
83
+ # A profile can send SMS in several markets, but create takes one — the market it
84
+ # starts in. Further markets are added through POST /v3/channels/sms with
85
+ # x-profile-id, and a read returns them all as a list. Create stays singular
86
+ # permanently rather than being a list that accepts one entry: the constraint is
87
+ # in the type, and there is no later widening to break the contract.
88
+ sig do
89
+ params(
90
+ rcs: T.nilable(Sentdm::SenderProfileRcs::OrHash),
91
+ sms: T.nilable(Sentdm::SenderProfileSMS::OrHash),
92
+ whatsapp: T.nilable(Sentdm::SenderProfileWhatsapp::OrHash)
93
+ ).returns(T.attached_class)
94
+ end
95
+ def self.new(
96
+ # Asks for an RCS agent of the profile's own, optionally with the full order form
97
+ # inline.
98
+ #
99
+ # Two modes, distinguished by whether any field is populated: "rcs": {} — intent
100
+ # only. Records that the profile wants its own agent; the order form is submitted
101
+ # separately through POST /v3/channels/rcs once the fields are ready. "rcs": {
102
+ # ...fields... } — full form. All required fields must be present; the agent is
103
+ # created alongside the profile in one call. Omitting opt_in_screenshot_url is
104
+ # allowed.
105
+ rcs: nil,
106
+ # One SMS market a profile sends in — a country and a sender type.
107
+ #
108
+ # A profile may have several. It is a tenant, not a market: a business sending to
109
+ # two countries is one customer of yours, and forcing it into two profiles would
110
+ # give it two API keys, two inboxes and two contact lists for one business. The
111
+ # platform already assumes many — CustomerChannelProviders is unique on (customer,
112
+ # channel, iso, number).
113
+ #
114
+ # No mode: a sender is the profile's own or it has none. Listing a market is the
115
+ # request for one.
116
+ #
117
+ # Also the discriminator for everything else: the compliance catalog is keyed on
118
+ # (country, number type), and that pair decides which fields brand accepts and
119
+ # what compliance is asked for.
120
+ sms: nil,
121
+ # The profile's own WhatsApp Business Account, named by the two identifiers the
122
+ # organization cannot answer for you.
123
+ #
124
+ # No mode: a profile's WABA is its own or it has none. Sharing the organization's
125
+ # would mean sharing its inbox and its throughput, which makes the two
126
+ # indistinguishable to a recipient — so inheriting is not offered rather than
127
+ # refused.
128
+ #
129
+ # Everything derivable is derived. Whenever this block is present, the solution
130
+ # the account arrived through, the client business portfolio that owns it, the
131
+ # access token and that token's expiry are all resolved from the organization by
132
+ # IPartnerSolutionService.ResolveAccountCredentialsAsync — the first two off the
133
+ # org's shared-account listing, the token minted against the org's own solution.
134
+ # They were previously asked for and are no longer accepted: solution_id and
135
+ # owner_business_id are Meta's answer about provenance, so taking them from the
136
+ # caller let a request assert a partnership Meta disagreed with, and the listing
137
+ # has to be consulted regardless because it is what proves the account is one this
138
+ # organization may reach.
139
+ #
140
+ # No access token, and there never was one here: it is minted per client business
141
+ # portfolio and rotates roughly every sixty days, so a pasted value would be stale
142
+ # before it was useful. Asking a customer to mint a System User token in Meta
143
+ # Business Manager is skilled work in a console they were never meant to see, and
144
+ # it would say nothing about which solution the account came from or when it is
145
+ # revoked.
146
+ whatsapp: nil
147
+ )
148
+ end
149
+
150
+ sig do
151
+ override.returns(
152
+ {
153
+ rcs: T.nilable(Sentdm::SenderProfileRcs),
154
+ sms: T.nilable(Sentdm::SenderProfileSMS),
155
+ whatsapp: T.nilable(Sentdm::SenderProfileWhatsapp)
156
+ }
157
+ )
158
+ end
159
+ def to_hash
160
+ end
161
+ end
162
+ end
163
+ end