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,461 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Resources
5
+ # Your customers, each sending as itself.
6
+ #
7
+ # A sender profile is a tenant of yours: it has its own API key, its own balance,
8
+ # and can have its own identity and senders — so your customers send under their
9
+ # own brand and never see Sent. Depth is one; a profile cannot create profiles.
10
+ #
11
+ # **Everything is inherited unless the profile owns it.** `{ "name": "…" }` alone
12
+ # gives you a usable profile immediately, running on your identity, your inbox and
13
+ # your billing. Supply a capability's fields and the profile owns that one
14
+ # instead.
15
+ #
16
+ # **A sender is the exception.** A brand and a campaign can be inherited; a number
17
+ # cannot. A profile either has a sender of its own or terminates through your
18
+ # shared routes.
19
+ #
20
+ # To act for a profile on any other resource, send `x-profile-id` with your
21
+ # organization key rather than looking for a parallel set of endpoints.
22
+ class SenderProfiles
23
+ # Creates a sender profile under your organization. A profile is a customer of
24
+ # yours: it sends under its own or your identity, and your customers never see
25
+ # Sent.
26
+ #
27
+ # ## The minimum
28
+ #
29
+ # `{ "name": "Example Retail", "short_name": "Example" }`. `short_name` is the SMS
30
+ # sender id and is required. Inbox and opt-out list come from your organization.
31
+ # Its brand and campaign are your organization's only where `compliance` says
32
+ # `{ "inherit": true }` — omitted, the profile has neither. Billing defaults to
33
+ # the profile's own balance, with your organization covering what it cannot.
34
+ #
35
+ # **A sender is not one of them.** The brand and the campaign can be inherited; a
36
+ # number cannot. A profile either has a sender of its own — `channels.sms` — or it
37
+ # has none and terminates through the shared routes for that country.
38
+ #
39
+ # ## Saying what a profile owns
40
+ #
41
+ # Every capability is one of three things, and there is no flag per state:
42
+ #
43
+ # - **Its own** — supply the capability's fields. Data is what owning looks like.
44
+ # - **The organization's** — `{ "inherit": true }`, with nothing else.
45
+ # - **None** — omit the block.
46
+ #
47
+ # There is no `"inherit": false` that also carries no data. A second way to say
48
+ # the same thing would let a request contradict itself.
49
+ #
50
+ # Inheriting needs no id. A customer has exactly one brand, so `brand` resolves
51
+ # without one.
52
+ #
53
+ # **The campaign has no block of its own.** It is only ever a registration, and
54
+ # every field of one is something a specific market demands — so it lives in
55
+ # `compliance`, alongside the rest of what that market asks for, and it says whose
56
+ # it is there too: `"compliance": { "campaign": { "inherit": true } }` runs the
57
+ # profile on your organization's campaign and brand, and stops this call asking
58
+ # for any campaign field. `"brand": { "inherit": true }` alone inherits the brand
59
+ # only: the campaign is then the profile's own. Inheriting takes _all_ of your
60
+ # organization's, because inheritance resolves an owner rather than a single row.
61
+ #
62
+ # A profile with a `brand` of its own **cannot** inherit the campaign, and asking
63
+ # is refused with `400`: a campaign is filed against a brand registration, and
64
+ # your organization's campaign is filed against your organization's brand rather
65
+ # than this profile's. Inherit both, own both, or inherit the brand and own the
66
+ # campaign.
67
+ #
68
+ # `channels.sms` is the market the profile starts in — one `country` and
69
+ # `number_type`. It decides what else this call asks for: the compliance catalog
70
+ # is keyed on that pair, and it determines which fields `brand` accepts and what
71
+ # `compliance` answers for.
72
+ #
73
+ # **Several numbers in that market**: `channels.sms.numbers` lists them, one entry
74
+ # per area code, e.g. `[{"area_code": "212", "quantity": 2}, {"quantity": 1}]` for
75
+ # two in 212 and one in any area code. `quantity` defaults to 1, an entry without
76
+ # `area_code` means any area code, and the total is at most 49. The market is
77
+ # created with **one campaign**, the one in `compliance.campaign`, and a US
78
+ # `TEN_DLC` market's numbers are stored on it and assigned when it is approved. A
79
+ # profile inheriting your organization's campaign keeps one number. Every number
80
+ # is listed in `channels.sms[].numbers` with its area code and status.
81
+ #
82
+ # A profile is a tenant, not a market, so it can go on to send in several — but
83
+ # through `POST /v3/channels/sms` with the `x-profile-id` header, one market and
84
+ # its compliance at a time. Reads return every market as `channels.sms[]`, so the
85
+ # read shape is a list even where this one is not.
86
+ #
87
+ # `brand` is required when `number_type` is `TEN_DLC` — inherited or its own. A
88
+ # 10DLC registration has nothing to attach to without one, and no later call can
89
+ # supply it, so omitting it is refused with `400` rather than reported as
90
+ # outstanding.
91
+ #
92
+ # ## Use cases and volume
93
+ #
94
+ # A TCR campaign declares one to five `use_cases`, each with its own
95
+ # `sample_messages` — TCR attributes samples to the use case they illustrate, so
96
+ # they travel together.
97
+ #
98
+ # How that set registers is derived from `volume` and never declared. Below the
99
+ # low-volume threshold the campaign registers as `LOW_VOLUME` with every entry as
100
+ # a sub-use-case; above it, one entry registers as that use case outright and
101
+ # several register as `MIXED` with sub-use-cases. `MIXED` and `LOW_VOLUME` are
102
+ # therefore refused as `use_case` values: they describe the shape of a set, which
103
+ # is ours to work out.
104
+ #
105
+ # **Leaving `volume` out is accepted and costs more.** An absent value registers
106
+ # the campaign at the standard tier, which carries the higher fee — so say so when
107
+ # a campaign is low volume. Sole proprietor brands are the exception: their fee is
108
+ # fixed by entity type, and volume only decides the use case.
109
+ #
110
+ # ## Compliance
111
+ #
112
+ # `brand` is captured identically in every country. Everything a specific market
113
+ # demands on top of it — including every field of the campaign — goes in
114
+ # `compliance`, as key/value entries whose keys depend on the sender's country and
115
+ # type. US `TEN_DLC` registers with The Campaign Registry and asks for a
116
+ # substantial set; an alphanumeric sender may pre-register with documents, or need
117
+ # nothing at all.
118
+ #
119
+ # You do not have to know any of it. Omit `compliance` and the response lists
120
+ # exactly what is outstanding, with types and accepted values — or call
121
+ # `GET /v3/compliance/requirements` first. Anything Sent supplies on your behalf
122
+ # is never asked for, and is rejected if sent.
123
+ #
124
+ # Requirements can be conditional, and the condition is published as
125
+ # `required_when` so you can render a form from it rather than discover the rule
126
+ # by being rejected. Every US `TEN_DLC` campaign field carries
127
+ # `compliance.inherit != true` — send `"inherit": true` and none of them is asked
128
+ # for or accepted, because the profile is running on your organization's campaign.
129
+ #
130
+ # ## Uploading documents
131
+ #
132
+ # Send `application/json` for everything except a market that pre-registers a
133
+ # sender with supporting documents. For those, send `multipart/form-data` instead:
134
+ # put this entire document — unchanged — in a single field named `profile`, and
135
+ # attach each file under a field named after the compliance key it satisfies.
136
+ # Individual form fields per property are not read; the payload is always the one
137
+ # `profile` field.
138
+ #
139
+ # A pre-registration market has no `brand` and no `campaign` — those are asked for
140
+ # only where a regime registers one — so its `compliance` carries nothing at all,
141
+ # and the documents are the request:
142
+ #
143
+ # ```bash
144
+ # curl -X POST https://api.sent.dm/v3/sender-profiles \
145
+ # -H 'x-api-key: YOUR_SECRET_TOKEN' \
146
+ # -F 'profile={
147
+ # "name": "Example Retail",
148
+ # "short_name": "EXAMPLE",
149
+ # "channels": {
150
+ # "sms": {
151
+ # "country": "XK",
152
+ # "number_type": "ALPHANUMERIC",
153
+ # "sender_value": "EXAMPLE"
154
+ # }
155
+ # }
156
+ # }' \
157
+ # -F 'business_registration=@registration.pdf' \
158
+ # -F 'letter_of_authorization=@loa.pdf'
159
+ # ```
160
+ #
161
+ # `business_registration` and `letter_of_authorization` are illustrative. The real
162
+ # field names are whatever that market configures, so read them from
163
+ # `GET /v3/compliance/requirements`, which lists documents separately from the
164
+ # values — under `attachments`, each with the `field_name` to put the file under.
165
+ #
166
+ # A document has no JSON form, so naming one in `compliance` is refused with `400`
167
+ # rather than ignored: accepting it would report the requirement as satisfied
168
+ # while no file was ever stored.
169
+ #
170
+ # ## WhatsApp and RCS
171
+ #
172
+ # Neither can be inherited, so neither takes an `inherit`: the profile's WhatsApp
173
+ # account and RCS agent are its own or it has none. Sharing your organization's
174
+ # would share its inbox and its throughput, which makes the two indistinguishable
175
+ # to a recipient.
176
+ #
177
+ # `channels.whatsapp` names one of the accounts shared into your organization, and
178
+ # takes the two identifiers nothing else can supply: `waba_id`, because your
179
+ # organization holds one account per client, and `phone_number_id`, because naming
180
+ # the account's number is what assigns it to the profile as the number it sends
181
+ # from.
182
+ #
183
+ # Everything else is resolved from your organization — the Multi-Partner Solution
184
+ # the account arrived through, the client business portfolio that owns it, the
185
+ # access token and that token's expiry. None of them is accepted here: the first
186
+ # two are Meta's answer about provenance, so a value you sent could assert a
187
+ # partnership Meta disagrees with, and the token is minted per client business and
188
+ # rotates roughly every sixty days.
189
+ #
190
+ # `phone_number_id` is optional. Omit it to connect the account now and settle the
191
+ # number later — the channel reads as `ACTION_NEEDED` with `reason_code`
192
+ # `CHANNEL_007`, and the profile's WhatsApp messages fail until a number is named.
193
+ # They do not fall back to your organization's account.
194
+ # `POST /v3/channels/whatsapp` connects an account to an existing profile and
195
+ # resolves the same fields the same way.
196
+ #
197
+ # An account of its own needs a sender of its own, so `channels.whatsapp` requires
198
+ # `channels.sms`. A profile sending SMS on your organization's sender shares that
199
+ # inbox and opt-out list, and is not a separate tenant to give an account to —
200
+ # asking is refused with `400`, before your organization is asked to resolve
201
+ # anything.
202
+ #
203
+ # `channels.rcs` records the RCS agent. RCS (Rich Communication Services) is the
204
+ # next-generation SMS standard built into Android — it lets you send branded
205
+ # messages with images, buttons and read receipts over the carrier network, with
206
+ # no app install required. Learn more in the
207
+ # [Google RCS documentation](https://developers.google.com/business-communications/rcs-business-messaging).
208
+ #
209
+ # All fields on the agent form are required except `opt_in_screenshot_url`. The
210
+ # full form must be submitted in one go so the carrier review has everything it
211
+ # needs. A carrier approval no API call can trigger is arranged offline, so the
212
+ # status reports `PROVISIONING` until it is.
213
+ #
214
+ # ## Responses
215
+ #
216
+ # `201` when the profile is complete on return — the fully-inherited case, where
217
+ # nothing needs registering. `202` when something is still provisioning, with
218
+ # per-capability status and outstanding requirements. `409` when the WhatsApp
219
+ # account supplied is already recorded. `400` covers a wrong value as well as a
220
+ # missing one: a missing brand under `TEN_DLC`, a brand or campaign inherited
221
+ # under `TEN_DLC` that your organization does not have yet, an unknown compliance
222
+ # key, a bad type, a sender id the market does not allow, a `waba_id` that is not
223
+ # one of the accounts shared into your organization, or a WhatsApp account Meta
224
+ # rejects. `502` when Meta could not be reached to verify the WhatsApp account;
225
+ # nothing was created, so retry.
226
+ sig do
227
+ params(
228
+ billing: T.nilable(Sentdm::SenderProfileBillingRequest::OrHash),
229
+ channels: T.nilable(Sentdm::SenderProfileChannels::OrHash),
230
+ compliance: Sentdm::Channels::MarketCompliance::OrHash,
231
+ description: T.nilable(String),
232
+ name: String,
233
+ notifications: T.nilable(String),
234
+ sandbox: T::Boolean,
235
+ short_name: String,
236
+ idempotency_key: String,
237
+ request_options: Sentdm::RequestOptions::OrHash
238
+ ).returns(Sentdm::APIResponseOfSenderProfile)
239
+ end
240
+ def create(
241
+ # Body param: Who pays for what a sender profile sends.
242
+ #
243
+ # Ownership reads the same way as BrandRequest and CampaignRequest: inherit: true
244
+ # is the organization paying; inherit: false (or an empty block) is the profile
245
+ # paying for itself.
246
+ #
247
+ # An absent block is the one place billing differs from brand and campaign: a
248
+ # profile still has to be paid for, so omitting billing stores
249
+ # ProfileAndOrganizationBilling — the profile pays first and its organization
250
+ # covers what the profile's balance cannot (see ResolveStored). { "name": "..." }
251
+ # stays a complete request.
252
+ #
253
+ # Billing carries no fields of its own yet, so a profile paying for itself is {
254
+ # "inherit": false } — or an empty block, which means the same. That is thinner
255
+ # than brand and campaign, where supplying data is the act of owning; it becomes
256
+ # ordinary the moment billing gains a contact or a payment method to carry.
257
+ billing: nil,
258
+ # Body param: The channels the profile sends on. Each is independently the
259
+ # profile's own or absent — none can be inherited, so none carries a mode and
260
+ # presence is the whole of the request.
261
+ #
262
+ # A profile can send SMS in several markets, but create takes one — the market it
263
+ # starts in. Further markets are added through POST /v3/channels/sms with
264
+ # x-profile-id, and a read returns them all as a list. Create stays singular
265
+ # permanently rather than being a list that accepts one entry: the constraint is
266
+ # in the type, and there is no later widening to break the contract.
267
+ channels: nil,
268
+ # Body param: The compliance values a market registers with. `brand` and
269
+ # `campaign` apply to US `TEN_DLC`; other markets fill this map with the document
270
+ # keys their own requirements name.
271
+ compliance: nil,
272
+ # Body param
273
+ description: nil,
274
+ # Body param: Display name for the profile. Required.
275
+ name: nil,
276
+ # Body param: Who is notified about this profile's events: ORGANIZATION,
277
+ # SENDER_PROFILE, or ORGANIZATION_AND_SENDER_PROFILE. Omitting it leaves the
278
+ # profile on the Organization default.
279
+ notifications: nil,
280
+ # Body param: Sandbox flag - when true, the operation is simulated without side
281
+ # effects Useful for testing integrations without actual execution
282
+ sandbox: nil,
283
+ # Body param: Short name, which is also the SMS sender id — required. 3–11
284
+ # characters of letters, numbers and spaces, with at least one letter.
285
+ short_name: nil,
286
+ # Header param: Unique key to ensure idempotent request processing. Must be 1-255
287
+ # alphanumeric characters, hyphens, or underscores. Responses are cached for 24
288
+ # hours per key per customer.
289
+ idempotency_key: nil,
290
+ request_options: {}
291
+ )
292
+ end
293
+
294
+ # Reads one of your sender profiles.
295
+ #
296
+ # The document mirrors `POST /v3/sender-profiles`, with three differences that
297
+ # follow from this being a read rather than a request.
298
+ #
299
+ # `channels.sms` is a **list**. Create takes the one market a profile starts in; a
300
+ # profile can go on to send in several, and this reports all of them, each with
301
+ # its own `status`.
302
+ #
303
+ # `compliance.brand` comes back **in full, with `inherit` saying whose it is**. On
304
+ # a request `{ "inherit": true }` carries no data because there is nothing to
305
+ # send; here it carries the data, because the point of a read is to say what the
306
+ # profile actually sends under.
307
+ #
308
+ # **There is no `campaigns` array.** Brand, campaign, and compliance documents are
309
+ # reported at the profile root in `compliance`. A profile running on your
310
+ # organization's campaign is asked for none of the campaign fields, so
311
+ # `compliance.campaign` carries `{ "inherit": true }` with no campaign data.
312
+ #
313
+ # `api_key` is **never** returned here. It is shown once, by create.
314
+ #
315
+ # A profile belonging to another organization reads as `404`, not `403`: saying
316
+ # which of the two it is would confirm the id exists.
317
+ sig do
318
+ params(
319
+ id: String,
320
+ request_options: Sentdm::RequestOptions::OrHash
321
+ ).returns(Sentdm::APIResponseOfSenderProfile)
322
+ end
323
+ def retrieve(
324
+ # Identifier of the profile, as returned by POST /v3/sender-profiles.
325
+ id,
326
+ request_options: {}
327
+ )
328
+ end
329
+
330
+ # Changes a profile's own attributes: `name`, `short_name`, `description` and
331
+ # `notifications` (who is emailed about the profile's events — `ORGANIZATION`,
332
+ # `SENDER_PROFILE`, or `ORGANIZATION_AND_SENDER_PROFILE`).
333
+ #
334
+ # **Only those.** A profile's identity, its markets and its compliance each have a
335
+ # sub-resource of their own, because each has its own validation and its own
336
+ # external consequences — a brand change may need re-registering, a market change
337
+ # provisions a sender. Folding them in here would give those fields two writers
338
+ # and no way to say which one wins.
339
+ #
340
+ # Omitting a field leaves it alone; sending `null` clears it. Those are different
341
+ # requests, so `{}` changes nothing and is refused rather than silently accepted —
342
+ # a caller who misspelt every field would otherwise get a `200` and an unchanged
343
+ # profile.
344
+ #
345
+ # `name` and `short_name` cannot be cleared: `short_name` is the SMS sender id, so
346
+ # a supplied value must be 3–11 characters of letters, numbers and spaces with at
347
+ # least one letter.
348
+ #
349
+ # Returns the profile as `GET /v3/sender-profiles/{id}` would, so the result of
350
+ # the change needs no second call to see.
351
+ sig do
352
+ params(
353
+ id: String,
354
+ description: T.nilable(String),
355
+ name: String,
356
+ notifications: T.nilable(String),
357
+ sandbox: T::Boolean,
358
+ short_name: T.nilable(String),
359
+ idempotency_key: String,
360
+ request_options: Sentdm::RequestOptions::OrHash
361
+ ).returns(Sentdm::APIResponseOfSenderProfile)
362
+ end
363
+ def update(
364
+ # Path param
365
+ id,
366
+ # Body param
367
+ description: nil,
368
+ # Body param
369
+ name: nil,
370
+ # Body param: Who is notified about this profile's events: ORGANIZATION,
371
+ # SENDER_PROFILE, or ORGANIZATION_AND_SENDER_PROFILE. Cannot be cleared — a
372
+ # supplied value must be one of those.
373
+ notifications: nil,
374
+ # Body param: Sandbox flag - when true, the operation is simulated without side
375
+ # effects Useful for testing integrations without actual execution
376
+ sandbox: nil,
377
+ # Body param
378
+ short_name: nil,
379
+ # Header param: Unique key to ensure idempotent request processing. Must be 1-255
380
+ # alphanumeric characters, hyphens, or underscores. Responses are cached for 24
381
+ # hours per key per customer.
382
+ idempotency_key: nil,
383
+ request_options: {}
384
+ )
385
+ end
386
+
387
+ # Lists the sender profiles under your organization, newest first, paginated with
388
+ # `page` and `page_size`.
389
+ #
390
+ # Each entry is the same document `GET /v3/sender-profiles/{id}` returns, with one
391
+ # difference: **`compliance.documents` at the profile root is absent**. Working
392
+ # out which documents a market holds means a catalog lookup and a document read
393
+ # per market, and doing that for every profile on a page would turn one request
394
+ # into dozens to answer a question you did not ask. Read a single profile for
395
+ # that. Brand and campaign are still included when they exist.
396
+ #
397
+ # `compliance.documents` being **absent** is not the same as it being an **empty
398
+ # list**. Absent means the documents were not fetched here; an empty list means
399
+ # the profile holds none.
400
+ #
401
+ # `api_key` is never returned. It is shown once, by create.
402
+ sig do
403
+ params(
404
+ page: Integer,
405
+ page_size: Integer,
406
+ request_options: Sentdm::RequestOptions::OrHash
407
+ ).returns(Sentdm::Internal::SenderProfilesPage[Sentdm::SenderProfile])
408
+ end
409
+ def list(
410
+ # Page number, 1-indexed.
411
+ page: nil,
412
+ # Profiles per page. Between 1 and 100.
413
+ page_size: nil,
414
+ request_options: {}
415
+ )
416
+ end
417
+
418
+ # Deletes one of your sender profiles and returns `204`.
419
+ #
420
+ # The delete is **soft**: the profile stops being usable and stops appearing in
421
+ # reads, and its message history is kept, because deleting a profile must not
422
+ # delete the record of what it sent.
423
+ #
424
+ # ## What it releases
425
+ #
426
+ # Anything the profile still held goes with it. A **phone number** returns to our
427
+ # inventory and can be given to whoever asks next — it does not stay reserved for
428
+ # you, and getting the same number back afterwards is not something we can
429
+ # promise. A **WhatsApp account of its own** is deregistered from Meta. Its
430
+ # routing rules stop being used, so nothing sends through the profile after this
431
+ # call.
432
+ #
433
+ # A profile that only inherits from its organization holds nothing of its own and
434
+ # releases nothing.
435
+ #
436
+ # ## When it is refused
437
+ #
438
+ # A number the profile holds that your **WhatsApp Business Account still carries**
439
+ # refuses the delete with a `409 CONFLICT_012`, and nothing is deleted: it would
440
+ # return to our shared inventory while Meta still routes WhatsApp to it, and the
441
+ # next customer given it could not register it at all. Only you can take it off
442
+ # the account — deregister **and** delete it in WhatsApp Manager, then try again.
443
+ # A `409 CONFLICT_013` means we could not read the account, so we cannot tell
444
+ # either way.
445
+ sig do
446
+ params(id: String, request_options: Sentdm::RequestOptions::OrHash).void
447
+ end
448
+ def delete(
449
+ # Identifier of the profile.
450
+ id,
451
+ request_options: {}
452
+ )
453
+ end
454
+
455
+ # @api private
456
+ sig { params(client: Sentdm::Client).returns(T.attached_class) }
457
+ def self.new(client:)
458
+ end
459
+ end
460
+ end
461
+ end
@@ -35,7 +35,7 @@ module Sentdm
35
35
  params(
36
36
  x_profile_id: String,
37
37
  request_options: Sentdm::RequestOptions::OrHash
38
- ).returns(Sentdm::Models::UserListResponse)
38
+ ).returns(Sentdm::APIResponseOfUsersList)
39
39
  end
40
40
  def list(
41
41
  # Profile UUID to scope the request to a child profile. Only organization API keys
@@ -32,8 +32,7 @@ module Sentdm
32
32
  is_inheritable: T::Boolean,
33
33
  retry_count: Integer,
34
34
  sandbox: T::Boolean,
35
- sender_profile:
36
- T.nilable(Sentdm::WebhookCreateParams::SenderProfile::OrHash),
35
+ sender_profile: T.nilable(Sentdm::WebhookSenderProfileConfig::OrHash),
37
36
  timeout_seconds: Integer,
38
37
  webhook_version: T.nilable(Integer),
39
38
  idempotency_key: String,
@@ -117,8 +116,7 @@ module Sentdm
117
116
  is_inheritable: T.nilable(T::Boolean),
118
117
  retry_count: Integer,
119
118
  sandbox: T::Boolean,
120
- sender_profile:
121
- T.nilable(Sentdm::WebhookUpdateParams::SenderProfile::OrHash),
119
+ sender_profile: T.nilable(Sentdm::WebhookSenderProfileConfig::OrHash),
122
120
  timeout_seconds: Integer,
123
121
  idempotency_key: String,
124
122
  x_profile_id: String,
@@ -214,7 +212,7 @@ module Sentdm
214
212
  params(
215
213
  x_profile_id: String,
216
214
  request_options: Sentdm::RequestOptions::OrHash
217
- ).returns(Sentdm::Models::WebhookListEventTypesResponse)
215
+ ).returns(Sentdm::APIResponseOfWebhookEventTypesList)
218
216
  end
219
217
  def list_event_types(
220
218
  # Profile UUID to scope the request to a child profile. Only organization API keys
@@ -237,11 +235,7 @@ module Sentdm
237
235
  search: T.nilable(String),
238
236
  x_profile_id: String,
239
237
  request_options: Sentdm::RequestOptions::OrHash
240
- ).returns(
241
- Sentdm::Internal::WebhookEventsPage[
242
- Sentdm::Models::WebhookListEventsResponse
243
- ]
244
- )
238
+ ).returns(Sentdm::Internal::WebhookEventsPage[Sentdm::WebhookDelivery])
245
239
  end
246
240
  def list_events(
247
241
  # Path param
@@ -272,7 +266,7 @@ module Sentdm
272
266
  idempotency_key: String,
273
267
  x_profile_id: String,
274
268
  request_options: Sentdm::RequestOptions::OrHash
275
- ).returns(Sentdm::Models::WebhookRotateSecretResponse)
269
+ ).returns(Sentdm::APIResponseOfWebhookSecret)
276
270
  end
277
271
  def rotate_secret(
278
272
  # Path param
@@ -304,7 +298,7 @@ module Sentdm
304
298
  idempotency_key: String,
305
299
  x_profile_id: String,
306
300
  request_options: Sentdm::RequestOptions::OrHash
307
- ).returns(Sentdm::Models::WebhookTestResponse)
301
+ ).returns(Sentdm::APIResponseOfWebhookTest)
308
302
  end
309
303
  def test_(
310
304
  # Path param
@@ -18,6 +18,8 @@ module Sentdm
18
18
 
19
19
  attr_reader profiles: Sentdm::Resources::Profiles
20
20
 
21
+ attr_reader sender_profiles: Sentdm::Resources::SenderProfiles
22
+
21
23
  attr_reader numbers: Sentdm::Resources::Numbers
22
24
 
23
25
  attr_reader messages: Sentdm::Resources::Messages
@@ -30,6 +32,8 @@ module Sentdm
30
32
 
31
33
  attr_reader channels: Sentdm::Resources::Channels
32
34
 
35
+ attr_reader compliance: Sentdm::Resources::Compliance
36
+
33
37
  attr_reader me: Sentdm::Resources::Me
34
38
 
35
39
  private def auth_headers: -> ::Hash[String, String]
@@ -0,0 +1,80 @@
1
+ module Sentdm
2
+ module Internal
3
+ class SenderProfilesPage[Elem]
4
+ include Sentdm::Internal::Type::BasePage[Elem]
5
+
6
+ attr_accessor data: Data
7
+
8
+ def inspect: -> String
9
+
10
+ type data =
11
+ { pagination: Data::Pagination, sender_profiles: ::Array[top] }
12
+ class Data < Sentdm::Internal::Type::BaseModel
13
+ attr_reader pagination: Data::Pagination?
14
+
15
+ def pagination=: (Data::Pagination) -> Data::Pagination
16
+
17
+ attr_reader sender_profiles: ::Array[top]?
18
+
19
+ def sender_profiles=: (::Array[top]) -> ::Array[top]
20
+
21
+ def initialize: (
22
+ ?pagination: Data::Pagination,
23
+ ?sender_profiles: ::Array[top]
24
+ ) -> void
25
+
26
+ def to_hash: -> {
27
+ pagination: Data::Pagination,
28
+ sender_profiles: ::Array[top]
29
+ }
30
+
31
+ type pagination =
32
+ {
33
+ has_more: bool,
34
+ page: Integer,
35
+ page_size: Integer,
36
+ total_count: Integer,
37
+ total_pages: Integer
38
+ }
39
+
40
+ class Pagination < Sentdm::Internal::Type::BaseModel
41
+ attr_reader has_more: bool?
42
+
43
+ def has_more=: (bool) -> bool
44
+
45
+ attr_reader page: Integer?
46
+
47
+ def page=: (Integer) -> Integer
48
+
49
+ attr_reader page_size: Integer?
50
+
51
+ def page_size=: (Integer) -> Integer
52
+
53
+ attr_reader total_count: Integer?
54
+
55
+ def total_count=: (Integer) -> Integer
56
+
57
+ attr_reader total_pages: Integer?
58
+
59
+ def total_pages=: (Integer) -> Integer
60
+
61
+ def initialize: (
62
+ ?has_more: bool,
63
+ ?page: Integer,
64
+ ?page_size: Integer,
65
+ ?total_count: Integer,
66
+ ?total_pages: Integer
67
+ ) -> void
68
+
69
+ def to_hash: -> {
70
+ has_more: bool,
71
+ page: Integer,
72
+ page_size: Integer,
73
+ total_count: Integer,
74
+ total_pages: Integer
75
+ }
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end