sentdm 0.27.0 → 0.28.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 (275) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/README.md +1 -27
  4. data/lib/sentdm/client.rb +71 -8
  5. data/lib/sentdm/internal/type/base_model.rb +5 -5
  6. data/lib/sentdm/models/contact_create_response.rb +249 -0
  7. data/lib/sentdm/models/contact_delete_params.rb +16 -2
  8. data/lib/sentdm/models/contact_list_response.rb +299 -16
  9. data/lib/sentdm/models/contact_retrieve_message_summary_response.rb +186 -0
  10. data/lib/sentdm/models/contact_retrieve_response.rb +249 -0
  11. data/lib/sentdm/models/contact_update_response.rb +249 -0
  12. data/lib/sentdm/models/conversation_list_messages_response.rb +436 -0
  13. data/lib/sentdm/models/conversation_list_response.rb +433 -0
  14. data/lib/sentdm/models/me_retrieve_response.rb +242 -12
  15. data/lib/sentdm/models/message_retrieve_activities_response.rb +165 -7
  16. data/lib/sentdm/models/message_retrieve_status_response.rb +74 -6
  17. data/lib/sentdm/models/message_send_response.rb +113 -28
  18. data/lib/sentdm/models/number_lookup_response.rb +74 -6
  19. data/lib/sentdm/models/profile_complete_response.rb +74 -6
  20. data/lib/sentdm/models/profile_create_params.rb +378 -26
  21. data/lib/sentdm/models/profile_create_response.rb +760 -0
  22. data/lib/sentdm/models/profile_delete_params.rb +16 -2
  23. data/lib/sentdm/models/profile_list_response.rb +825 -14
  24. data/lib/sentdm/models/profile_retrieve_response.rb +762 -0
  25. data/lib/sentdm/models/profile_update_params.rb +391 -24
  26. data/lib/sentdm/models/profile_update_response.rb +760 -0
  27. data/lib/sentdm/models/profiles/campaign_create_params.rb +156 -3
  28. data/lib/sentdm/models/profiles/campaign_create_response.rb +420 -0
  29. data/lib/sentdm/models/profiles/campaign_delete_params.rb +17 -2
  30. data/lib/sentdm/models/profiles/campaign_list_response.rb +421 -0
  31. data/lib/sentdm/models/profiles/campaign_update_params.rb +156 -3
  32. data/lib/sentdm/models/profiles/campaign_update_response.rb +420 -0
  33. data/lib/sentdm/models/template_create_response.rb +209 -0
  34. data/lib/sentdm/models/template_list_params.rb +9 -2
  35. data/lib/sentdm/models/template_list_response.rb +262 -16
  36. data/lib/sentdm/models/template_retrieve_response.rb +209 -0
  37. data/lib/sentdm/models/template_update_response.rb +209 -0
  38. data/lib/sentdm/models/user_invite_response.rb +201 -0
  39. data/lib/sentdm/models/user_list_response.rb +259 -14
  40. data/lib/sentdm/models/user_remove_params.rb +16 -2
  41. data/lib/sentdm/models/user_retrieve_response.rb +201 -0
  42. data/lib/sentdm/models/user_update_role_response.rb +201 -0
  43. data/lib/sentdm/models/webhook_create_response.rb +229 -0
  44. data/lib/sentdm/models/webhook_list_event_types_response.rb +213 -13
  45. data/lib/sentdm/models/webhook_list_events_response.rb +162 -13
  46. data/lib/sentdm/models/webhook_list_response.rb +280 -15
  47. data/lib/sentdm/models/webhook_retrieve_response.rb +229 -0
  48. data/lib/sentdm/models/webhook_rotate_secret_params.rb +17 -2
  49. data/lib/sentdm/models/webhook_rotate_secret_response.rb +74 -6
  50. data/lib/sentdm/models/webhook_test_response.rb +74 -6
  51. data/lib/sentdm/models/webhook_toggle_status_response.rb +229 -0
  52. data/lib/sentdm/models/webhook_update_response.rb +229 -0
  53. data/lib/sentdm/models.rb +0 -52
  54. data/lib/sentdm/resources/contacts.rb +30 -13
  55. data/lib/sentdm/resources/conversations.rb +12 -4
  56. data/lib/sentdm/resources/me.rb +6 -1
  57. data/lib/sentdm/resources/messages.rb +11 -1
  58. data/lib/sentdm/resources/numbers.rb +6 -1
  59. data/lib/sentdm/resources/profiles/campaigns.rb +47 -9
  60. data/lib/sentdm/resources/profiles.rb +134 -58
  61. data/lib/sentdm/resources/templates.rb +14 -8
  62. data/lib/sentdm/resources/users.rb +12 -7
  63. data/lib/sentdm/resources/webhooks.rb +19 -9
  64. data/lib/sentdm/version.rb +1 -1
  65. data/lib/sentdm.rb +22 -32
  66. data/rbi/sentdm/client.rbi +71 -8
  67. data/rbi/sentdm/models/contact_create_response.rbi +407 -0
  68. data/rbi/sentdm/models/contact_delete_params.rbi +19 -2
  69. data/rbi/sentdm/models/contact_list_response.rbi +527 -21
  70. data/rbi/sentdm/models/contact_retrieve_message_summary_response.rbi +397 -0
  71. data/rbi/sentdm/models/contact_retrieve_response.rbi +409 -0
  72. data/rbi/sentdm/models/contact_update_response.rbi +407 -0
  73. data/rbi/sentdm/models/conversation_list_messages_response.rbi +843 -0
  74. data/rbi/sentdm/models/conversation_list_response.rbi +819 -0
  75. data/rbi/sentdm/models/me_retrieve_response.rbi +367 -16
  76. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +335 -11
  77. data/rbi/sentdm/models/message_retrieve_status_response.rbi +148 -8
  78. data/rbi/sentdm/models/message_send_response.rbi +178 -32
  79. data/rbi/sentdm/models/number_lookup_response.rbi +135 -8
  80. data/rbi/sentdm/models/profile_complete_response.rbi +137 -8
  81. data/rbi/sentdm/models/profile_create_params.rbi +592 -42
  82. data/rbi/sentdm/models/profile_create_response.rbi +1226 -0
  83. data/rbi/sentdm/models/profile_delete_params.rbi +19 -2
  84. data/rbi/sentdm/models/profile_list_response.rbi +1366 -18
  85. data/rbi/sentdm/models/profile_retrieve_response.rbi +1230 -0
  86. data/rbi/sentdm/models/profile_update_params.rbi +610 -30
  87. data/rbi/sentdm/models/profile_update_response.rbi +1226 -0
  88. data/rbi/sentdm/models/profiles/campaign_create_params.rbi +218 -4
  89. data/rbi/sentdm/models/profiles/campaign_create_response.rbi +674 -0
  90. data/rbi/sentdm/models/profiles/campaign_delete_params.rbi +14 -1
  91. data/rbi/sentdm/models/profiles/campaign_list_response.rbi +667 -0
  92. data/rbi/sentdm/models/profiles/campaign_update_params.rbi +218 -4
  93. data/rbi/sentdm/models/profiles/campaign_update_response.rbi +674 -0
  94. data/rbi/sentdm/models/template_create_response.rbi +349 -0
  95. data/rbi/sentdm/models/template_list_params.rbi +10 -2
  96. data/rbi/sentdm/models/template_list_response.rbi +469 -21
  97. data/rbi/sentdm/models/template_retrieve_response.rbi +355 -0
  98. data/rbi/sentdm/models/template_update_response.rbi +349 -0
  99. data/rbi/sentdm/models/user_invite_response.rbi +336 -0
  100. data/rbi/sentdm/models/user_list_response.rbi +463 -18
  101. data/rbi/sentdm/models/user_remove_params.rbi +19 -2
  102. data/rbi/sentdm/models/user_retrieve_response.rbi +336 -0
  103. data/rbi/sentdm/models/user_update_role_response.rbi +341 -0
  104. data/rbi/sentdm/models/webhook_create_response.rbi +361 -0
  105. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +433 -16
  106. data/rbi/sentdm/models/webhook_list_events_response.rbi +319 -15
  107. data/rbi/sentdm/models/webhook_list_response.rbi +480 -19
  108. data/rbi/sentdm/models/webhook_retrieve_response.rbi +363 -0
  109. data/rbi/sentdm/models/webhook_rotate_secret_params.rbi +14 -1
  110. data/rbi/sentdm/models/webhook_rotate_secret_response.rbi +148 -8
  111. data/rbi/sentdm/models/webhook_test_response.rbi +135 -8
  112. data/rbi/sentdm/models/webhook_toggle_status_response.rbi +379 -0
  113. data/rbi/sentdm/models/webhook_update_response.rbi +361 -0
  114. data/rbi/sentdm/models.rbi +0 -54
  115. data/rbi/sentdm/resources/contacts.rbi +24 -9
  116. data/rbi/sentdm/resources/conversations.rbi +10 -2
  117. data/rbi/sentdm/resources/me.rbi +6 -1
  118. data/rbi/sentdm/resources/messages.rbi +11 -1
  119. data/rbi/sentdm/resources/numbers.rbi +6 -1
  120. data/rbi/sentdm/resources/profiles/campaigns.rbi +36 -6
  121. data/rbi/sentdm/resources/profiles.rbi +174 -66
  122. data/rbi/sentdm/resources/templates.rbi +15 -5
  123. data/rbi/sentdm/resources/users.rbi +9 -4
  124. data/rbi/sentdm/resources/webhooks.rbi +15 -5
  125. data/sig/sentdm/models/contact_create_response.rbs +216 -0
  126. data/sig/sentdm/models/contact_delete_params.rbs +10 -6
  127. data/sig/sentdm/models/contact_list_response.rbs +263 -20
  128. data/sig/sentdm/models/contact_retrieve_message_summary_response.rbs +182 -0
  129. data/sig/sentdm/models/contact_retrieve_response.rbs +216 -0
  130. data/sig/sentdm/models/contact_update_response.rbs +216 -0
  131. data/sig/sentdm/models/conversation_list_messages_response.rbs +404 -0
  132. data/sig/sentdm/models/conversation_list_response.rbs +404 -0
  133. data/sig/sentdm/models/me_retrieve_response.rbs +176 -18
  134. data/sig/sentdm/models/message_retrieve_activities_response.rbs +147 -12
  135. data/sig/sentdm/models/message_retrieve_status_response.rbs +71 -9
  136. data/sig/sentdm/models/message_send_response.rbs +71 -9
  137. data/sig/sentdm/models/number_lookup_response.rbs +71 -9
  138. data/sig/sentdm/models/profile_complete_response.rbs +71 -9
  139. data/sig/sentdm/models/profile_create_params.rbs +271 -24
  140. data/sig/sentdm/models/profile_create_response.rbs +559 -0
  141. data/sig/sentdm/models/profile_delete_params.rbs +10 -6
  142. data/sig/sentdm/models/profile_list_response.rbs +615 -15
  143. data/sig/sentdm/models/profile_retrieve_response.rbs +559 -0
  144. data/sig/sentdm/models/profile_update_params.rbs +263 -12
  145. data/sig/sentdm/models/profile_update_response.rbs +559 -0
  146. data/sig/sentdm/models/profiles/campaign_create_params.rbs +108 -4
  147. data/sig/sentdm/models/profiles/campaign_create_response.rbs +357 -0
  148. data/sig/sentdm/models/profiles/campaign_delete_params.rbs +15 -8
  149. data/sig/sentdm/models/profiles/campaign_list_response.rbs +357 -0
  150. data/sig/sentdm/models/profiles/campaign_update_params.rbs +108 -4
  151. data/sig/sentdm/models/profiles/campaign_update_response.rbs +357 -0
  152. data/sig/sentdm/models/template_create_response.rbs +182 -0
  153. data/sig/sentdm/models/template_list_response.rbs +230 -19
  154. data/sig/sentdm/models/template_retrieve_response.rbs +182 -0
  155. data/sig/sentdm/models/template_update_response.rbs +182 -0
  156. data/sig/sentdm/models/user_invite_response.rbs +177 -0
  157. data/sig/sentdm/models/user_list_response.rbs +233 -15
  158. data/sig/sentdm/models/user_remove_params.rbs +10 -6
  159. data/sig/sentdm/models/user_retrieve_response.rbs +177 -0
  160. data/sig/sentdm/models/user_update_role_response.rbs +177 -0
  161. data/sig/sentdm/models/webhook_create_response.rbs +208 -0
  162. data/sig/sentdm/models/webhook_list_event_types_response.rbs +203 -15
  163. data/sig/sentdm/models/webhook_list_events_response.rbs +142 -14
  164. data/sig/sentdm/models/webhook_list_response.rbs +255 -20
  165. data/sig/sentdm/models/webhook_retrieve_response.rbs +208 -0
  166. data/sig/sentdm/models/webhook_rotate_secret_params.rbs +17 -8
  167. data/sig/sentdm/models/webhook_rotate_secret_response.rbs +71 -9
  168. data/sig/sentdm/models/webhook_test_response.rbs +71 -9
  169. data/sig/sentdm/models/webhook_toggle_status_response.rbs +208 -0
  170. data/sig/sentdm/models/webhook_update_response.rbs +208 -0
  171. data/sig/sentdm/models.rbs +0 -52
  172. data/sig/sentdm/resources/contacts.rbs +4 -4
  173. data/sig/sentdm/resources/conversations.rbs +2 -2
  174. data/sig/sentdm/resources/profiles/campaigns.rbs +5 -5
  175. data/sig/sentdm/resources/profiles.rbs +11 -11
  176. data/sig/sentdm/resources/templates.rbs +3 -3
  177. data/sig/sentdm/resources/users.rbs +3 -3
  178. data/sig/sentdm/resources/webhooks.rbs +4 -4
  179. metadata +68 -98
  180. data/lib/sentdm/models/api_meta.rb +0 -34
  181. data/lib/sentdm/models/api_response_of_contact.rb +0 -46
  182. data/lib/sentdm/models/api_response_of_contact_message_summary.rb +0 -43
  183. data/lib/sentdm/models/api_response_of_conversation_messages_list.rb +0 -43
  184. data/lib/sentdm/models/api_response_of_profile_detail.rb +0 -43
  185. data/lib/sentdm/models/api_response_of_user.rb +0 -43
  186. data/lib/sentdm/models/api_response_template.rb +0 -43
  187. data/lib/sentdm/models/api_response_webhook.rb +0 -43
  188. data/lib/sentdm/models/billing_contact_info.rb +0 -47
  189. data/lib/sentdm/models/brand_business_info.rb +0 -114
  190. data/lib/sentdm/models/brand_compliance_info.rb +0 -67
  191. data/lib/sentdm/models/brand_contact_info.rb +0 -58
  192. data/lib/sentdm/models/brands_brand_data.rb +0 -34
  193. data/lib/sentdm/models/contact_message_summary.rb +0 -76
  194. data/lib/sentdm/models/contact_response.rb +0 -126
  195. data/lib/sentdm/models/conversation_messages_list.rb +0 -245
  196. data/lib/sentdm/models/error_detail.rb +0 -42
  197. data/lib/sentdm/models/mutation_request.rb +0 -20
  198. data/lib/sentdm/models/pagination_meta.rb +0 -80
  199. data/lib/sentdm/models/payment_details.rb +0 -44
  200. data/lib/sentdm/models/profile_detail.rb +0 -605
  201. data/lib/sentdm/models/profile_settings.rb +0 -66
  202. data/lib/sentdm/models/profiles/api_response_of_brand_campaign.rb +0 -45
  203. data/lib/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rb +0 -45
  204. data/lib/sentdm/models/profiles/brand_campaign.rb +0 -247
  205. data/lib/sentdm/models/profiles/campaign_data.rb +0 -130
  206. data/lib/sentdm/models/profiles/campaign_use_case.rb +0 -71
  207. data/lib/sentdm/models/profiles/campaign_use_case_data.rb +0 -29
  208. data/lib/sentdm/models/template.rb +0 -90
  209. data/lib/sentdm/models/user_response.rb +0 -82
  210. data/lib/sentdm/models/webhook_event_type.rb +0 -45
  211. data/lib/sentdm/models/webhook_response.rb +0 -95
  212. data/rbi/sentdm/models/api_meta.rbi +0 -55
  213. data/rbi/sentdm/models/api_response_of_contact.rbi +0 -74
  214. data/rbi/sentdm/models/api_response_of_contact_message_summary.rbi +0 -79
  215. data/rbi/sentdm/models/api_response_of_conversation_messages_list.rbi +0 -79
  216. data/rbi/sentdm/models/api_response_of_profile_detail.rbi +0 -74
  217. data/rbi/sentdm/models/api_response_of_user.rbi +0 -74
  218. data/rbi/sentdm/models/api_response_template.rbi +0 -74
  219. data/rbi/sentdm/models/api_response_webhook.rbi +0 -74
  220. data/rbi/sentdm/models/billing_contact_info.rbi +0 -65
  221. data/rbi/sentdm/models/brand_business_info.rbi +0 -162
  222. data/rbi/sentdm/models/brand_compliance_info.rbi +0 -84
  223. data/rbi/sentdm/models/brand_contact_info.rbi +0 -78
  224. data/rbi/sentdm/models/brands_brand_data.rbi +0 -65
  225. data/rbi/sentdm/models/contact_message_summary.rbi +0 -144
  226. data/rbi/sentdm/models/contact_response.rbi +0 -183
  227. data/rbi/sentdm/models/conversation_messages_list.rbi +0 -419
  228. data/rbi/sentdm/models/error_detail.rbi +0 -66
  229. data/rbi/sentdm/models/mutation_request.rbi +0 -32
  230. data/rbi/sentdm/models/pagination_meta.rbi +0 -135
  231. data/rbi/sentdm/models/payment_details.rbi +0 -59
  232. data/rbi/sentdm/models/profile_detail.rbi +0 -872
  233. data/rbi/sentdm/models/profile_settings.rbi +0 -86
  234. data/rbi/sentdm/models/profiles/api_response_of_brand_campaign.rbi +0 -81
  235. data/rbi/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbi +0 -76
  236. data/rbi/sentdm/models/profiles/brand_campaign.rbi +0 -299
  237. data/rbi/sentdm/models/profiles/campaign_data.rbi +0 -146
  238. data/rbi/sentdm/models/profiles/campaign_use_case.rbi +0 -110
  239. data/rbi/sentdm/models/profiles/campaign_use_case_data.rbi +0 -51
  240. data/rbi/sentdm/models/template.rbi +0 -129
  241. data/rbi/sentdm/models/user_response.rbi +0 -118
  242. data/rbi/sentdm/models/webhook_event_type.rbi +0 -74
  243. data/rbi/sentdm/models/webhook_response.rbi +0 -140
  244. data/sig/sentdm/models/api_meta.rbs +0 -27
  245. data/sig/sentdm/models/api_response_of_contact.rbs +0 -39
  246. data/sig/sentdm/models/api_response_of_contact_message_summary.rbs +0 -39
  247. data/sig/sentdm/models/api_response_of_conversation_messages_list.rbs +0 -39
  248. data/sig/sentdm/models/api_response_of_profile_detail.rbs +0 -39
  249. data/sig/sentdm/models/api_response_of_user.rbs +0 -39
  250. data/sig/sentdm/models/api_response_template.rbs +0 -39
  251. data/sig/sentdm/models/api_response_webhook.rbs +0 -39
  252. data/sig/sentdm/models/billing_contact_info.rbs +0 -30
  253. data/sig/sentdm/models/brand_business_info.rbs +0 -89
  254. data/sig/sentdm/models/brand_compliance_info.rbs +0 -50
  255. data/sig/sentdm/models/brand_contact_info.rbs +0 -45
  256. data/sig/sentdm/models/brands_brand_data.rbs +0 -30
  257. data/sig/sentdm/models/contact_message_summary.rbs +0 -84
  258. data/sig/sentdm/models/contact_response.rbs +0 -111
  259. data/sig/sentdm/models/conversation_messages_list.rbs +0 -240
  260. data/sig/sentdm/models/error_detail.rbs +0 -39
  261. data/sig/sentdm/models/mutation_request.rbs +0 -15
  262. data/sig/sentdm/models/pagination_meta.rbs +0 -67
  263. data/sig/sentdm/models/payment_details.rbs +0 -30
  264. data/sig/sentdm/models/profile_detail.rbs +0 -469
  265. data/sig/sentdm/models/profile_settings.rbs +0 -50
  266. data/sig/sentdm/models/profiles/api_response_of_brand_campaign.rbs +0 -41
  267. data/sig/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbs +0 -41
  268. data/sig/sentdm/models/profiles/brand_campaign.rbs +0 -194
  269. data/sig/sentdm/models/profiles/campaign_data.rbs +0 -87
  270. data/sig/sentdm/models/profiles/campaign_use_case.rbs +0 -66
  271. data/sig/sentdm/models/profiles/campaign_use_case_data.rbs +0 -27
  272. data/sig/sentdm/models/template.rbs +0 -79
  273. data/sig/sentdm/models/user_response.rbs +0 -72
  274. data/sig/sentdm/models/webhook_event_type.rbs +0 -51
  275. data/sig/sentdm/models/webhook_response.rbs +0 -103
@@ -3,19 +3,31 @@
3
3
  module Sentdm
4
4
  module Resources
5
5
  class Profiles
6
- # Manage organization profiles
6
+ # **Deprecated use Sender Profiles.**
7
+ #
8
+ # The original profile resource, kept because it has live callers. It still works,
9
+ # and its replacement is `/v3/sender-profiles`, which takes the identity and the
10
+ # campaign in one call instead of across three.
11
+ #
12
+ # New integrations should not start here.
7
13
  class Campaigns
14
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
15
+ # removed in a future release. It still behaves exactly as before, so nothing
16
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
17
+ # which models a profile's markets, compliance, brand, campaigns and billing
18
+ # explicitly.
19
+ #
8
20
  # Creates a new campaign scoped under the brand of the specified profile. Each
9
21
  # campaign must include at least one use case with sample messages.
10
22
  sig do
11
23
  params(
12
24
  profile_id: String,
13
- campaign: Sentdm::Profiles::CampaignData::OrHash,
25
+ campaign: Sentdm::Profiles::CampaignCreateParams::Campaign::OrHash,
14
26
  sandbox: T::Boolean,
15
27
  idempotency_key: String,
16
28
  x_profile_id: String,
17
29
  request_options: Sentdm::RequestOptions::OrHash
18
- ).returns(Sentdm::Profiles::APIResponseOfBrandCampaign)
30
+ ).returns(Sentdm::Models::Profiles::CampaignCreateResponse)
19
31
  end
20
32
  def create(
21
33
  # Path param: Profile ID from route
@@ -37,18 +49,24 @@ module Sentdm
37
49
  )
38
50
  end
39
51
 
52
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
53
+ # removed in a future release. It still behaves exactly as before, so nothing
54
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
55
+ # which models a profile's markets, compliance, brand, campaigns and billing
56
+ # explicitly.
57
+ #
40
58
  # Updates an existing campaign under the brand of the specified profile. Cannot
41
59
  # update campaigns that have already been submitted to TCR.
42
60
  sig do
43
61
  params(
44
62
  campaign_id: String,
45
63
  profile_id: String,
46
- campaign: Sentdm::Profiles::CampaignData::OrHash,
64
+ campaign: Sentdm::Profiles::CampaignUpdateParams::Campaign::OrHash,
47
65
  sandbox: T::Boolean,
48
66
  idempotency_key: String,
49
67
  x_profile_id: String,
50
68
  request_options: Sentdm::RequestOptions::OrHash
51
- ).returns(Sentdm::Profiles::APIResponseOfBrandCampaign)
69
+ ).returns(Sentdm::Models::Profiles::CampaignUpdateResponse)
52
70
  end
53
71
  def update(
54
72
  # Path param: Campaign ID from route
@@ -72,6 +90,12 @@ module Sentdm
72
90
  )
73
91
  end
74
92
 
93
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
94
+ # removed in a future release. It still behaves exactly as before, so nothing
95
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
96
+ # which models a profile's markets, compliance, brand, campaigns and billing
97
+ # explicitly.
98
+ #
75
99
  # Retrieves all campaigns linked to the profile's brand, including use cases and
76
100
  # sample messages. Returns inherited campaigns if inherit_tcr_campaign=true.
77
101
  sig do
@@ -79,7 +103,7 @@ module Sentdm
79
103
  profile_id: String,
80
104
  x_profile_id: String,
81
105
  request_options: Sentdm::RequestOptions::OrHash
82
- ).returns(Sentdm::Profiles::APIResponseOfListOfBrandCampaign)
106
+ ).returns(Sentdm::Models::Profiles::CampaignListResponse)
83
107
  end
84
108
  def list(
85
109
  # Profile ID from route
@@ -91,6 +115,12 @@ module Sentdm
91
115
  )
92
116
  end
93
117
 
118
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
119
+ # removed in a future release. It still behaves exactly as before, so nothing
120
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
121
+ # which models a profile's markets, compliance, brand, campaigns and billing
122
+ # explicitly.
123
+ #
94
124
  # Deletes a campaign by ID from the brand of the specified profile. The profile
95
125
  # must belong to the authenticated organization.
96
126
  sig do
@@ -2,35 +2,45 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
- # Manage organization profiles
5
+ # **Deprecated use Sender Profiles.**
6
+ #
7
+ # The original profile resource, kept because it has live callers. It still works,
8
+ # and its replacement is `/v3/sender-profiles`, which takes the identity and the
9
+ # campaign in one call instead of across three.
10
+ #
11
+ # New integrations should not start here.
6
12
  class Profiles
7
- # Manage organization profiles
13
+ # **Deprecated use Sender Profiles.**
14
+ #
15
+ # The original profile resource, kept because it has live callers. It still works,
16
+ # and its replacement is `/v3/sender-profiles`, which takes the identity and the
17
+ # campaign in one call instead of across three.
18
+ #
19
+ # New integrations should not start here.
8
20
  sig { returns(Sentdm::Resources::Profiles::Campaigns) }
9
21
  attr_reader :campaigns
10
22
 
23
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
24
+ # removed in a future release. It still behaves exactly as before, so nothing
25
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
26
+ # which models a profile's markets, compliance, brand, campaigns and billing
27
+ # explicitly.
28
+ #
11
29
  # Creates a new sender profile within an organization. Profiles represent
12
30
  # different brands, departments, or use cases, each with their own messaging
13
31
  # configuration and settings. Requires admin role in the organization.
14
32
  #
15
33
  # ## WhatsApp Business Account
16
34
  #
17
- # Every profile must be linked to a WhatsApp Business Account. There are two ways
18
- # to do this:
35
+ # Every profile owns its own WhatsApp Business Account accounts are never shared
36
+ # between profiles or inherited from the organization. Provide a
37
+ # `whatsapp_business_account` object with `waba_id`, `phone_number_id`, and
38
+ # `access_token`. Obtain these from Meta Business Manager by creating a System
39
+ # User with `whatsapp_business_messaging` and `whatsapp_business_management`
40
+ # permissions.
19
41
  #
20
- # **1. Inherit from organization (default)** Omit the
21
- # `whatsapp_business_account` field. The profile will share the organization's
22
- # WhatsApp Business Account, which must have been set up via WhatsApp Embedded
23
- # Signup. This is the recommended path for most use cases.
24
- #
25
- # **2. Direct credentials** — Provide a `whatsapp_business_account` object with
26
- # `waba_id`, `phone_number_id`, and `access_token`. Use this when the profile
27
- # needs its own independent WhatsApp Business Account. Obtain these from Meta
28
- # Business Manager by creating a System User with `whatsapp_business_messaging`
29
- # and `whatsapp_business_management` permissions.
30
- #
31
- # If the `whatsapp_business_account` field is omitted and the organization has no
32
- # WhatsApp Business Account configured, the request will be rejected with
33
- # HTTP 422.
42
+ # Omit the field and the profile is created without WhatsApp, staying incomplete
43
+ # until it has an account of its own.
34
44
  #
35
45
  # ## Brand
36
46
  #
@@ -46,11 +56,12 @@ module Sentdm
46
56
  # when `billing_model` is `"organization"` is not allowed.
47
57
  sig do
48
58
  params(
49
- allow_contact_sharing: T::Boolean,
50
- allow_template_sharing: T::Boolean,
51
- billing_contact: T.nilable(Sentdm::BillingContactInfo::OrHash),
59
+ allow_contact_sharing: T.nilable(T::Boolean),
60
+ allow_template_sharing: T.nilable(T::Boolean),
61
+ billing_contact:
62
+ T.nilable(Sentdm::ProfileCreateParams::BillingContact::OrHash),
52
63
  billing_model: T.nilable(String),
53
- brand: T.nilable(Sentdm::BrandsBrandData::OrHash),
64
+ brand: T.nilable(Sentdm::ProfileCreateParams::Brand::OrHash),
54
65
  description: T.nilable(String),
55
66
  icon: T.nilable(String),
56
67
  inherit_contacts: T.nilable(T::Boolean),
@@ -58,7 +69,8 @@ module Sentdm
58
69
  inherit_tcr_campaign: T.nilable(T::Boolean),
59
70
  inherit_templates: T.nilable(T::Boolean),
60
71
  name: String,
61
- payment_details: T.nilable(Sentdm::PaymentDetails::OrHash),
72
+ payment_details:
73
+ T.nilable(Sentdm::ProfileCreateParams::PaymentDetails::OrHash),
62
74
  sandbox: T::Boolean,
63
75
  short_name: T.nilable(String),
64
76
  whatsapp_business_account:
@@ -68,12 +80,27 @@ module Sentdm
68
80
  idempotency_key: String,
69
81
  x_profile_id: String,
70
82
  request_options: Sentdm::RequestOptions::OrHash
71
- ).returns(Sentdm::APIResponseOfProfileDetail)
83
+ ).returns(Sentdm::Models::ProfileCreateResponse)
72
84
  end
73
85
  def create(
74
- # Body param: Whether contacts are shared across profiles (default: false)
86
+ # Body param: Deprecated. Accepted and ignored. Contact and template sharing
87
+ # between sender profiles is gone — a profile sees only what it owns, and the
88
+ # organization still sees all of its profiles' contacts and templates through
89
+ # read-time widening. The four columns behind these flags were dropped by
90
+ # M260720120000.
91
+ #
92
+ # Bound rather than dropped so the properties survive on the wire and in a
93
+ # generated client: an SDK that assigns them keeps compiling, which is the
94
+ # compatibility this exists for. Deliberately not refused either — a 400 would
95
+ # break an integration that is otherwise working, and the capability they ask for
96
+ # is gone either way. Same rule as SendingPhoneNumberProfileId.
97
+ #
98
+ # The read is what makes this survivable: every profile reports all four as false,
99
+ # so a caller that checks its own write can see it did not take. Requests carrying
100
+ # one are logged, so we can tell when nobody sends them any more and the fields
101
+ # can go for real.
75
102
  allow_contact_sharing: nil,
76
- # Body param: Whether templates are shared across profiles (default: false)
103
+ # Body param
77
104
  allow_template_sharing: nil,
78
105
  # Body param: Billing contact information for a profile. Required when
79
106
  # billing_model is "profile" or "profile_and_organization".
@@ -94,23 +121,21 @@ module Sentdm
94
121
  description: nil,
95
122
  # Body param: Profile icon URL (optional)
96
123
  icon: nil,
97
- # Body param: Whether this profile inherits contacts from organization (default:
98
- # true)
124
+ # Body param
99
125
  inherit_contacts: nil,
100
126
  # Body param: Whether this profile inherits TCR brand from organization (default:
101
- # true)
127
+ # false)
102
128
  inherit_tcr_brand: nil,
103
129
  # Body param: Whether this profile inherits TCR campaign from organization
104
- # (default: true)
130
+ # (default: false)
105
131
  inherit_tcr_campaign: nil,
106
- # Body param: Whether this profile inherits templates from organization (default:
107
- # true)
132
+ # Body param
108
133
  inherit_templates: nil,
109
134
  # Body param: Profile name (required)
110
135
  name: nil,
111
- # Body param: Payment card details for a profile. Accepted when billing_model is
112
- # "profile" or "profile_and_organization". These details are not stored on our
113
- # servers and will be forwarded to the payment processor.
136
+ # Body param: Payment card details for this profile (optional). Accepted when
137
+ # billing_model is "profile" or "profile_and_organization". Not persisted on our
138
+ # servers forwarded to the payment processor.
114
139
  payment_details: nil,
115
140
  # Body param: Sandbox flag - when true, the operation is simulated without side
116
141
  # effects Useful for testing integrations without actual execution
@@ -137,6 +162,12 @@ module Sentdm
137
162
  )
138
163
  end
139
164
 
165
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
166
+ # removed in a future release. It still behaves exactly as before, so nothing
167
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
168
+ # which models a profile's markets, compliance, brand, campaigns and billing
169
+ # explicitly.
170
+ #
140
171
  # Retrieves detailed information about a specific sender profile within an
141
172
  # organization, including brand and KYC information if a brand has been
142
173
  # configured.
@@ -145,7 +176,7 @@ module Sentdm
145
176
  profile_id: String,
146
177
  x_profile_id: String,
147
178
  request_options: Sentdm::RequestOptions::OrHash
148
- ).returns(Sentdm::APIResponseOfProfileDetail)
179
+ ).returns(Sentdm::Models::ProfileRetrieveResponse)
149
180
  end
150
181
  def retrieve(
151
182
  # Profile ID from route parameter
@@ -157,6 +188,12 @@ module Sentdm
157
188
  )
158
189
  end
159
190
 
191
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
192
+ # removed in a future release. It still behaves exactly as before, so nothing
193
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
194
+ # which models a profile's markets, compliance, brand, campaigns and billing
195
+ # explicitly.
196
+ #
160
197
  # Updates a profile's configuration and settings. Requires admin role in the
161
198
  # organization. Only provided fields will be updated (partial update).
162
199
  #
@@ -175,15 +212,30 @@ module Sentdm
175
212
  # CVC, and billing ZIP code. Payment details are **never stored** on our servers
176
213
  # and are forwarded directly to the payment processor. Providing `payment_details`
177
214
  # when `billing_model` is `"organization"` is not allowed.
215
+ #
216
+ # ## Deprecated fields
217
+ #
218
+ # `sending_phone_number_profile_id` and `sending_whatsapp_number_profile_id` are
219
+ # **accepted and ignored**. Sender borrowing is gone: a profile cannot send from
220
+ # another profile's number, because two profiles behind one sender makes an
221
+ # inbound reply and a delivery receipt ambiguous about whose they are.
222
+ #
223
+ # Sending either **changes nothing and still returns `200`** — they are kept on
224
+ # the contract so an existing integration keeps working. Reads carry both keys too
225
+ # and always answer `null`, which is how you can confirm the value did not take.
226
+ #
227
+ # Give the profile a sender of its own instead — `POST /v3/channels/sms` or
228
+ # `POST /v3/channels/whatsapp`, sent with the `x-profile-id` header naming it.
178
229
  sig do
179
230
  params(
180
231
  profile_id: String,
181
232
  allow_contact_sharing: T.nilable(T::Boolean),
182
233
  allow_number_change_during_onboarding: T.nilable(T::Boolean),
183
234
  allow_template_sharing: T.nilable(T::Boolean),
184
- billing_contact: T.nilable(Sentdm::BillingContactInfo::OrHash),
235
+ billing_contact:
236
+ T.nilable(Sentdm::ProfileUpdateParams::BillingContact::OrHash),
185
237
  billing_model: T.nilable(String),
186
- brand: T.nilable(Sentdm::BrandsBrandData::OrHash),
238
+ brand: T.nilable(Sentdm::ProfileUpdateParams::Brand::OrHash),
187
239
  description: T.nilable(String),
188
240
  icon: T.nilable(String),
189
241
  inherit_contacts: T.nilable(T::Boolean),
@@ -191,7 +243,8 @@ module Sentdm
191
243
  inherit_tcr_campaign: T.nilable(T::Boolean),
192
244
  inherit_templates: T.nilable(T::Boolean),
193
245
  name: T.nilable(String),
194
- payment_details: T.nilable(Sentdm::PaymentDetails::OrHash),
246
+ payment_details:
247
+ T.nilable(Sentdm::ProfileUpdateParams::PaymentDetails::OrHash),
195
248
  sandbox: T::Boolean,
196
249
  sending_phone_number: T.nilable(String),
197
250
  sending_phone_number_profile_id: T.nilable(String),
@@ -201,16 +254,26 @@ module Sentdm
201
254
  idempotency_key: String,
202
255
  x_profile_id: String,
203
256
  request_options: Sentdm::RequestOptions::OrHash
204
- ).returns(Sentdm::APIResponseOfProfileDetail)
257
+ ).returns(Sentdm::Models::ProfileUpdateResponse)
205
258
  end
206
259
  def update(
207
260
  # Path param: Profile ID from route parameter
208
261
  profile_id,
209
- # Body param: Whether contacts are shared across profiles (optional)
262
+ # Body param: Deprecated. Accepted and ignored. Contact and template sharing
263
+ # between sender profiles is gone — a profile sees only what it owns, and the
264
+ # organization still sees all of its profiles' contacts and templates through
265
+ # read-time widening. The four columns behind these flags were dropped by
266
+ # M260720120000.
267
+ #
268
+ # Retired the same way as SendingPhoneNumberProfileId, and for the same reason:
269
+ # the properties stay bound so an SDK that assigns them keeps compiling, and a 400
270
+ # would break a working integration over a capability that is gone regardless.
271
+ # Every profile reports all four as false, so a caller that checks its own write
272
+ # can see it did not take.
210
273
  allow_contact_sharing: nil,
211
274
  # Body param: Whether number changes are allowed during onboarding (optional)
212
275
  allow_number_change_during_onboarding: nil,
213
- # Body param: Whether templates are shared across profiles (optional)
276
+ # Body param
214
277
  allow_template_sharing: nil,
215
278
  # Body param: Billing contact information for a profile. Required when
216
279
  # billing_model is "profile" or "profile_and_organization".
@@ -231,30 +294,47 @@ module Sentdm
231
294
  description: nil,
232
295
  # Body param: Profile icon URL (optional)
233
296
  icon: nil,
234
- # Body param: Whether this profile inherits contacts from organization (optional)
297
+ # Body param
235
298
  inherit_contacts: nil,
236
299
  # Body param: Whether this profile inherits TCR brand from organization (optional)
237
300
  inherit_tcr_brand: nil,
238
301
  # Body param: Whether this profile inherits TCR campaign from organization
239
302
  # (optional)
240
303
  inherit_tcr_campaign: nil,
241
- # Body param: Whether this profile inherits templates from organization (optional)
304
+ # Body param
242
305
  inherit_templates: nil,
243
306
  # Body param: Profile name (optional)
244
307
  name: nil,
245
- # Body param: Payment card details for a profile. Accepted when billing_model is
246
- # "profile" or "profile_and_organization". These details are not stored on our
247
- # servers and will be forwarded to the payment processor.
308
+ # Body param: Payment card details for this profile (optional). Accepted when
309
+ # billing_model is "profile" or "profile_and_organization". Not persisted on our
310
+ # servers forwarded to the payment processor.
248
311
  payment_details: nil,
249
312
  # Body param: Sandbox flag - when true, the operation is simulated without side
250
313
  # effects Useful for testing integrations without actual execution
251
314
  sandbox: nil,
252
315
  # Body param: Direct phone number for SMS sending (optional)
253
316
  sending_phone_number: nil,
254
- # Body param: Reference to another profile to use for SMS configuration (optional)
317
+ # Body param: Deprecated. Accepted and ignored. Sender borrowing is gone: a
318
+ # profile cannot send from another profile's SMS number. Supplying this changes
319
+ # nothing and the request still succeeds.
320
+ #
321
+ # Bound rather than dropped so the property survives on the wire and in a
322
+ # generated client — an SDK that assigns it keeps compiling, which is the
323
+ # compatibility this exists for. It is deliberately not refused: a 400 here would
324
+ # break an integration that is otherwise working, and the capability it asks for
325
+ # is gone either way.
326
+ #
327
+ # The trade-off, stated plainly. A caller asking for borrowing is told it
328
+ # succeeded when nothing happened. What makes that survivable is the read:
329
+ # sending_phone_number_profile_id comes back null on every profile, so a caller
330
+ # that checks its own write can see it did not take. Every request that carries
331
+ # one is logged, so we can tell when nobody is sending it any more and the field
332
+ # can go for real.
333
+ #
334
+ # Give the profile a sender of its own instead: POST /v3/channels/sms with the
335
+ # x-profile-id header naming it.
255
336
  sending_phone_number_profile_id: nil,
256
- # Body param: Reference to another profile to use for WhatsApp configuration
257
- # (optional)
337
+ # Body param
258
338
  sending_whatsapp_number_profile_id: nil,
259
339
  # Body param: Profile short name/abbreviation (optional). Must be 3–11 characters,
260
340
  # contain only letters, numbers, and spaces, and include at least one letter.
@@ -274,6 +354,12 @@ module Sentdm
274
354
  )
275
355
  end
276
356
 
357
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
358
+ # removed in a future release. It still behaves exactly as before, so nothing
359
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
360
+ # which models a profile's markets, compliance, brand, campaigns and billing
361
+ # explicitly.
362
+ #
277
363
  # Retrieves all sender profiles within an organization, including brand
278
364
  # information for each profile. Profiles represent different brands, departments,
279
365
  # or use cases within an organization, each with their own messaging
@@ -292,8 +378,17 @@ module Sentdm
292
378
  )
293
379
  end
294
380
 
381
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
382
+ # removed in a future release. It still behaves exactly as before, so nothing
383
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
384
+ # which models a profile's markets, compliance, brand, campaigns and billing
385
+ # explicitly.
386
+ #
295
387
  # Soft deletes a sender profile. The profile will be marked as deleted but data is
296
- # retained. Requires admin role in the organization.
388
+ # retained. Anything it still held is released first: phone numbers return to our
389
+ # inventory and can go to whoever asks next, its own WhatsApp account is
390
+ # deregistered, and its routing rules stop being used. Requires admin role in the
391
+ # organization.
297
392
  sig do
298
393
  params(
299
394
  profile_id: String,
@@ -316,15 +411,27 @@ module Sentdm
316
411
  )
317
412
  end
318
413
 
414
+ # **Deprecated.** This endpoint is replaced by `/v3/sender-profiles` and will be
415
+ # removed in a future release. It still behaves exactly as before, so nothing
416
+ # needs to change today — but new integrations should use `/v3/sender-profiles`,
417
+ # which models a profile's markets, compliance, brand, campaigns and billing
418
+ # explicitly.
419
+ #
319
420
  # Final step in the profile compliance workflow. Validates all prerequisites (KYC,
320
421
  # brand, campaigns, required documents), connects the profile to the SMS and
321
- # WhatsApp channels, and sets its status based on configuration. Prerequisites are
322
- # always validated first: if any fail the call returns 400. If they pass and the
323
- # profile is already completed, the call returns 200 and does nothing. Otherwise
324
- # it returns 202 and calls the provided webhook URL when background processing
325
- # finishes.
422
+ # WhatsApp channels, and marks it onboarded. Prerequisites are always validated
423
+ # first: if any fail the call returns 400 naming every unmet one, and nothing is
424
+ # started. If they pass and the profile is already onboarded, the call returns 200
425
+ # and does nothing. Otherwise it returns 202 and calls the provided webhook URL
426
+ # when background processing finishes.
427
+ #
428
+ # Callable with the organization's API key or the profile's own key. The key's
429
+ # user must be an admin or owner of the profile, or of the organization it belongs
430
+ # to.
326
431
  #
327
- # Prerequisites:
432
+ # Prerequisites (all but the last are checked before the already-onboarded
433
+ # short-circuit, matching the previous contract; the last is checked after it, so
434
+ # a profile that is already onboarded is never rejected by it):
328
435
  #
329
436
  # - Profile must have a name, short name, and description (short name max 50
330
437
  # characters, description max 5000)
@@ -335,17 +442,18 @@ module Sentdm
335
442
  # - TCR applications must have at least one campaign, own or inherited
336
443
  # - Destination countries marked as main must have their required compliance
337
444
  # documents uploaded
445
+ # - TCR applications must state whether they inherit the organization's TCR brand
446
+ # and campaign
338
447
  #
339
- # Resulting status:
448
+ # Outcome:
340
449
  #
341
- # - If either the SMS or WhatsApp channel is unconfigured, the profile is
342
- # SUBMITTED
343
- # - For a TCR application that inherits both its brand and its campaigns, the
344
- # profile is COMPLETED
345
- # - For a TCR application that owns either its brand or its campaigns, the profile
346
- # is COMPLETED once both have been submitted to TCR, and SUBMITTED until then
347
- # - For a non-TCR application, the profile is SUBMITTED when a main destination
348
- # country is set, and COMPLETED otherwise
450
+ # - Once the prerequisites pass and background processing succeeds, the profile's
451
+ # conversionFlowStatus becomes ONBOARDED and its public status reads `approved`
452
+ # - A profile with no WhatsApp channel, or one still awaiting TCR registration or
453
+ # country documents, is onboarded like any other. Those are answered by the
454
+ # brand and campaign records, not by a status on the profile
455
+ # - If background processing fails, the profile keeps the status it already had
456
+ # and the webhook reports the reason
349
457
  sig do
350
458
  params(
351
459
  profile_id: String,
@@ -2,7 +2,13 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
- # Manage message templates with variable substitution
5
+ # Reusable message bodies with named variables.
6
+ #
7
+ # A template is substituted at send time from the values you pass, so the copy
8
+ # lives here rather than in your application. WhatsApp templates additionally need
9
+ # Meta's approval before they can be sent, and a template's channel status reports
10
+ # where that stands — an approved SMS template and an unapproved WhatsApp one are
11
+ # the same template in two states.
6
12
  class Templates
7
13
  # Creates a new message template with header, body, footer, and buttons. The
8
14
  # template can be submitted for review immediately or saved as draft for later
@@ -18,7 +24,7 @@ module Sentdm
18
24
  idempotency_key: String,
19
25
  x_profile_id: String,
20
26
  request_options: Sentdm::RequestOptions::OrHash
21
- ).returns(Sentdm::APIResponseTemplate)
27
+ ).returns(Sentdm::Models::TemplateCreateResponse)
22
28
  end
23
29
  def create(
24
30
  # Body param: Template category: MARKETING, UTILITY, AUTHENTICATION (optional,
@@ -57,7 +63,7 @@ module Sentdm
57
63
  id: String,
58
64
  x_profile_id: String,
59
65
  request_options: Sentdm::RequestOptions::OrHash
60
- ).returns(Sentdm::APIResponseTemplate)
66
+ ).returns(Sentdm::Models::TemplateRetrieveResponse)
61
67
  end
62
68
  def retrieve(
63
69
  # Template ID from route parameter
@@ -83,7 +89,7 @@ module Sentdm
83
89
  idempotency_key: String,
84
90
  x_profile_id: String,
85
91
  request_options: Sentdm::RequestOptions::OrHash
86
- ).returns(Sentdm::APIResponseTemplate)
92
+ ).returns(Sentdm::Models::TemplateUpdateResponse)
87
93
  end
88
94
  def update(
89
95
  # Path param: Template ID from route parameter
@@ -136,7 +142,11 @@ module Sentdm
136
142
  page_size:,
137
143
  # Query param: Optional category filter: MARKETING, UTILITY, AUTHENTICATION
138
144
  category: nil,
139
- # Query param: Optional filter by welcome playground flag
145
+ # Query param: Accepted and ignored. It used to filter on the welcome-playground
146
+ # marker inside a template's LOB details; that filter is gone and nothing reads
147
+ # this value, so sending it neither narrows nor widens the result. Retained only
148
+ # so a client still passing is_welcome_playground keeps binding instead of the
149
+ # request shape changing under it.
140
150
  is_welcome_playground: nil,
141
151
  # Query param: Optional search term for filtering templates
142
152
  search: nil,
@@ -2,7 +2,12 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
- # Invite, update, and manage organization users and roles
5
+ # The people who can sign in to your organization, and what each may do.
6
+ #
7
+ # Users are dashboard access and nothing else — they do not send, and removing one
8
+ # does not affect traffic. An API key is not a user: it belongs to the
9
+ # organization or to a sender profile, so revoking a person's access leaves your
10
+ # integration running.
6
11
  class Users
7
12
  # Retrieves detailed information about a specific user in an organization or
8
13
  # profile. Requires developer role or higher.
@@ -11,7 +16,7 @@ module Sentdm
11
16
  user_id: String,
12
17
  x_profile_id: String,
13
18
  request_options: Sentdm::RequestOptions::OrHash
14
- ).returns(Sentdm::APIResponseOfUser)
19
+ ).returns(Sentdm::Models::UserRetrieveResponse)
15
20
  end
16
21
  def retrieve(
17
22
  # User ID from route parameter
@@ -52,7 +57,7 @@ module Sentdm
52
57
  idempotency_key: String,
53
58
  x_profile_id: String,
54
59
  request_options: Sentdm::RequestOptions::OrHash
55
- ).returns(Sentdm::APIResponseOfUser)
60
+ ).returns(Sentdm::Models::UserInviteResponse)
56
61
  end
57
62
  def invite(
58
63
  # Body param: User email address (required)
@@ -110,7 +115,7 @@ module Sentdm
110
115
  idempotency_key: String,
111
116
  x_profile_id: String,
112
117
  request_options: Sentdm::RequestOptions::OrHash
113
- ).returns(Sentdm::APIResponseOfUser)
118
+ ).returns(Sentdm::Models::UserUpdateRoleResponse)
114
119
  end
115
120
  def update_role(
116
121
  # Path param: User ID from route parameter
@@ -2,7 +2,17 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
- # Configure webhook endpoints for real-time event delivery
5
+ # Delivery reports and inbound messages, pushed to you.
6
+ #
7
+ # Subscribe an endpoint to the event types you care about —
8
+ # `GET /v3/webhooks/event-types` lists them — and we POST each one as it happens,
9
+ # retrying on failure. Polling `GET /v3/messages/{id}` works and does not scale.
10
+ #
11
+ # **Verify the signature.** Every delivery is signed with your endpoint's secret;
12
+ # an unverified endpoint is one anybody can post to. `rotate-secret` replaces it,
13
+ # `test` sends a specimen event, and `GET /v3/webhooks/{id}/events` shows what we
14
+ # tried to deliver and what your endpoint answered — which is the first place to
15
+ # look when something appears to be missing.
6
16
  class Webhooks
7
17
  # Creates a new webhook endpoint for the authenticated customer.
8
18
  sig do
@@ -17,7 +27,7 @@ module Sentdm
17
27
  idempotency_key: String,
18
28
  x_profile_id: String,
19
29
  request_options: Sentdm::RequestOptions::OrHash
20
- ).returns(Sentdm::APIResponseWebhook)
30
+ ).returns(Sentdm::Models::WebhookCreateResponse)
21
31
  end
22
32
  def create(
23
33
  # Body param
@@ -53,7 +63,7 @@ module Sentdm
53
63
  id: String,
54
64
  x_profile_id: String,
55
65
  request_options: Sentdm::RequestOptions::OrHash
56
- ).returns(Sentdm::APIResponseWebhook)
66
+ ).returns(Sentdm::Models::WebhookRetrieveResponse)
57
67
  end
58
68
  def retrieve(
59
69
  id,
@@ -78,7 +88,7 @@ module Sentdm
78
88
  idempotency_key: String,
79
89
  x_profile_id: String,
80
90
  request_options: Sentdm::RequestOptions::OrHash
81
- ).returns(Sentdm::APIResponseWebhook)
91
+ ).returns(Sentdm::Models::WebhookUpdateResponse)
82
92
  end
83
93
  def update(
84
94
  # Path param
@@ -267,7 +277,7 @@ module Sentdm
267
277
  idempotency_key: String,
268
278
  x_profile_id: String,
269
279
  request_options: Sentdm::RequestOptions::OrHash
270
- ).returns(Sentdm::APIResponseWebhook)
280
+ ).returns(Sentdm::Models::WebhookToggleStatusResponse)
271
281
  end
272
282
  def toggle_status(
273
283
  # Path param