sentdm 0.28.0 → 0.30.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 (276) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/README.md +27 -1
  4. data/lib/sentdm/internal/type/base_model.rb +5 -5
  5. data/lib/sentdm/models/api_meta.rb +34 -0
  6. data/lib/sentdm/models/api_response_of_contact.rb +46 -0
  7. data/lib/sentdm/models/api_response_of_contact_message_summary.rb +43 -0
  8. data/lib/sentdm/models/api_response_of_conversation_messages_list.rb +43 -0
  9. data/lib/sentdm/models/api_response_of_profile_detail.rb +43 -0
  10. data/lib/sentdm/models/api_response_of_user.rb +43 -0
  11. data/lib/sentdm/models/api_response_template.rb +43 -0
  12. data/lib/sentdm/models/api_response_webhook.rb +43 -0
  13. data/lib/sentdm/models/billing_contact_info.rb +47 -0
  14. data/lib/sentdm/models/brand_business_info.rb +114 -0
  15. data/lib/sentdm/models/brand_compliance_info.rb +59 -0
  16. data/lib/sentdm/models/brand_contact_info.rb +58 -0
  17. data/lib/sentdm/models/brands_brand_data.rb +34 -0
  18. data/lib/sentdm/models/contact_delete_params.rb +2 -16
  19. data/lib/sentdm/models/contact_list_response.rb +12 -295
  20. data/lib/sentdm/models/contact_message_summary.rb +76 -0
  21. data/lib/sentdm/models/contact_response.rb +139 -0
  22. data/lib/sentdm/models/conversation_messages_list.rb +245 -0
  23. data/lib/sentdm/models/error_detail.rb +42 -0
  24. data/lib/sentdm/models/inbound_message_event_payload.rb +17 -17
  25. data/lib/sentdm/models/me_retrieve_response.rb +43 -243
  26. data/lib/sentdm/models/message_event_payload.rb +11 -11
  27. data/lib/sentdm/models/message_retrieve_activities_response.rb +9 -159
  28. data/lib/sentdm/models/message_retrieve_status_response.rb +6 -74
  29. data/lib/sentdm/models/message_send_response.rb +6 -74
  30. data/lib/sentdm/models/mutation_request.rb +20 -0
  31. data/lib/sentdm/models/number_lookup_response.rb +6 -74
  32. data/lib/sentdm/models/pagination_meta.rb +84 -0
  33. data/lib/sentdm/models/payment_details.rb +40 -0
  34. data/lib/sentdm/models/profile_complete_response.rb +6 -74
  35. data/lib/sentdm/models/profile_create_params.rb +9 -345
  36. data/lib/sentdm/models/profile_delete_params.rb +2 -16
  37. data/lib/sentdm/models/profile_detail.rb +650 -0
  38. data/lib/sentdm/models/profile_list_response.rb +12 -815
  39. data/lib/sentdm/models/profile_settings.rb +85 -0
  40. data/lib/sentdm/models/profile_update_params.rb +9 -345
  41. data/lib/sentdm/models/profiles/api_response_of_brand_campaign.rb +45 -0
  42. data/lib/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rb +45 -0
  43. data/lib/sentdm/models/profiles/brand_campaign.rb +247 -0
  44. data/lib/sentdm/models/profiles/campaign_create_params.rb +3 -156
  45. data/lib/sentdm/models/profiles/campaign_data.rb +136 -0
  46. data/lib/sentdm/models/profiles/campaign_delete_params.rb +2 -17
  47. data/lib/sentdm/models/profiles/campaign_update_params.rb +3 -156
  48. data/lib/sentdm/models/profiles/campaign_use_case.rb +71 -0
  49. data/lib/sentdm/models/profiles/campaign_use_case_data.rb +29 -0
  50. data/lib/sentdm/models/template.rb +102 -0
  51. data/lib/sentdm/models/template_event_payload.rb +18 -18
  52. data/lib/sentdm/models/template_list_response.rb +12 -258
  53. data/lib/sentdm/models/user_list_response.rb +12 -249
  54. data/lib/sentdm/models/user_remove_params.rb +2 -16
  55. data/lib/sentdm/models/user_response.rb +94 -0
  56. data/lib/sentdm/models/webhook_event_type.rb +45 -0
  57. data/lib/sentdm/models/webhook_list_event_types_response.rb +12 -203
  58. data/lib/sentdm/models/webhook_list_events_response.rb +9 -157
  59. data/lib/sentdm/models/webhook_list_response.rb +12 -276
  60. data/lib/sentdm/models/webhook_response.rb +120 -0
  61. data/lib/sentdm/models/webhook_rotate_secret_params.rb +2 -17
  62. data/lib/sentdm/models/webhook_rotate_secret_response.rb +6 -74
  63. data/lib/sentdm/models/webhook_test_response.rb +6 -74
  64. data/lib/sentdm/models.rb +52 -0
  65. data/lib/sentdm/resources/contacts.rb +8 -8
  66. data/lib/sentdm/resources/conversations.rb +4 -4
  67. data/lib/sentdm/resources/me.rb +11 -0
  68. data/lib/sentdm/resources/profiles/campaigns.rb +8 -8
  69. data/lib/sentdm/resources/profiles.rb +12 -12
  70. data/lib/sentdm/resources/templates.rb +6 -6
  71. data/lib/sentdm/resources/users.rb +6 -6
  72. data/lib/sentdm/resources/webhooks.rb +8 -8
  73. data/lib/sentdm/version.rb +1 -1
  74. data/lib/sentdm.rb +32 -22
  75. data/rbi/sentdm/models/api_meta.rbi +55 -0
  76. data/rbi/sentdm/models/api_response_of_contact.rbi +74 -0
  77. data/rbi/sentdm/models/api_response_of_contact_message_summary.rbi +79 -0
  78. data/rbi/sentdm/models/api_response_of_conversation_messages_list.rbi +79 -0
  79. data/rbi/sentdm/models/api_response_of_profile_detail.rbi +74 -0
  80. data/rbi/sentdm/models/api_response_of_user.rbi +74 -0
  81. data/rbi/sentdm/models/api_response_template.rbi +74 -0
  82. data/rbi/sentdm/models/api_response_webhook.rbi +74 -0
  83. data/rbi/sentdm/models/billing_contact_info.rbi +65 -0
  84. data/rbi/sentdm/models/brand_business_info.rbi +162 -0
  85. data/rbi/sentdm/models/brand_compliance_info.rbi +76 -0
  86. data/rbi/sentdm/models/brand_contact_info.rbi +78 -0
  87. data/rbi/sentdm/models/brands_brand_data.rbi +65 -0
  88. data/rbi/sentdm/models/contact_delete_params.rbi +2 -19
  89. data/rbi/sentdm/models/contact_list_response.rbi +16 -522
  90. data/rbi/sentdm/models/contact_message_summary.rbi +144 -0
  91. data/rbi/sentdm/models/contact_response.rbi +200 -0
  92. data/rbi/sentdm/models/conversation_messages_list.rbi +419 -0
  93. data/rbi/sentdm/models/error_detail.rbi +66 -0
  94. data/rbi/sentdm/models/inbound_message_event_payload.rbi +16 -22
  95. data/rbi/sentdm/models/me_retrieve_response.rbi +60 -367
  96. data/rbi/sentdm/models/message_event_payload.rbi +12 -15
  97. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +12 -325
  98. data/rbi/sentdm/models/message_retrieve_status_response.rbi +8 -148
  99. data/rbi/sentdm/models/message_send_response.rbi +8 -135
  100. data/rbi/sentdm/models/mutation_request.rbi +32 -0
  101. data/rbi/sentdm/models/number_lookup_response.rbi +8 -135
  102. data/rbi/sentdm/models/pagination_meta.rbi +135 -0
  103. data/rbi/sentdm/models/payment_details.rbi +56 -0
  104. data/rbi/sentdm/models/profile_complete_response.rbi +8 -137
  105. data/rbi/sentdm/models/profile_create_params.rbi +12 -546
  106. data/rbi/sentdm/models/profile_delete_params.rbi +2 -19
  107. data/rbi/sentdm/models/profile_detail.rbi +918 -0
  108. data/rbi/sentdm/models/profile_list_response.rbi +16 -1347
  109. data/rbi/sentdm/models/profile_settings.rbi +102 -0
  110. data/rbi/sentdm/models/profile_update_params.rbi +12 -546
  111. data/rbi/sentdm/models/profiles/api_response_of_brand_campaign.rbi +81 -0
  112. data/rbi/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbi +76 -0
  113. data/rbi/sentdm/models/profiles/brand_campaign.rbi +299 -0
  114. data/rbi/sentdm/models/profiles/campaign_create_params.rbi +4 -218
  115. data/rbi/sentdm/models/profiles/campaign_data.rbi +158 -0
  116. data/rbi/sentdm/models/profiles/campaign_delete_params.rbi +1 -14
  117. data/rbi/sentdm/models/profiles/campaign_update_params.rbi +4 -218
  118. data/rbi/sentdm/models/profiles/campaign_use_case.rbi +110 -0
  119. data/rbi/sentdm/models/profiles/campaign_use_case_data.rbi +51 -0
  120. data/rbi/sentdm/models/template.rbi +139 -0
  121. data/rbi/sentdm/models/template_event_payload.rbi +21 -27
  122. data/rbi/sentdm/models/template_list_response.rbi +16 -464
  123. data/rbi/sentdm/models/user_list_response.rbi +16 -444
  124. data/rbi/sentdm/models/user_remove_params.rbi +2 -19
  125. data/rbi/sentdm/models/user_response.rbi +131 -0
  126. data/rbi/sentdm/models/webhook_event_type.rbi +74 -0
  127. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +16 -414
  128. data/rbi/sentdm/models/webhook_list_events_response.rbi +12 -314
  129. data/rbi/sentdm/models/webhook_list_response.rbi +16 -475
  130. data/rbi/sentdm/models/webhook_response.rbi +153 -0
  131. data/rbi/sentdm/models/webhook_rotate_secret_params.rbi +1 -14
  132. data/rbi/sentdm/models/webhook_rotate_secret_response.rbi +8 -148
  133. data/rbi/sentdm/models/webhook_test_response.rbi +8 -135
  134. data/rbi/sentdm/models.rbi +54 -0
  135. data/rbi/sentdm/resources/contacts.rbi +4 -4
  136. data/rbi/sentdm/resources/conversations.rbi +2 -2
  137. data/rbi/sentdm/resources/me.rbi +11 -0
  138. data/rbi/sentdm/resources/profiles/campaigns.rbi +5 -5
  139. data/rbi/sentdm/resources/profiles.rbi +9 -13
  140. data/rbi/sentdm/resources/templates.rbi +3 -3
  141. data/rbi/sentdm/resources/users.rbi +3 -3
  142. data/rbi/sentdm/resources/webhooks.rbi +4 -4
  143. data/sig/sentdm/models/api_meta.rbs +27 -0
  144. data/sig/sentdm/models/api_response_of_contact.rbs +39 -0
  145. data/sig/sentdm/models/api_response_of_contact_message_summary.rbs +39 -0
  146. data/sig/sentdm/models/api_response_of_conversation_messages_list.rbs +39 -0
  147. data/sig/sentdm/models/api_response_of_profile_detail.rbs +39 -0
  148. data/sig/sentdm/models/api_response_of_user.rbs +39 -0
  149. data/sig/sentdm/models/api_response_template.rbs +39 -0
  150. data/sig/sentdm/models/api_response_webhook.rbs +39 -0
  151. data/sig/sentdm/models/billing_contact_info.rbs +30 -0
  152. data/sig/sentdm/models/brand_business_info.rbs +89 -0
  153. data/sig/sentdm/models/brand_compliance_info.rbs +45 -0
  154. data/sig/sentdm/models/brand_contact_info.rbs +45 -0
  155. data/sig/sentdm/models/brands_brand_data.rbs +30 -0
  156. data/sig/sentdm/models/contact_delete_params.rbs +6 -10
  157. data/sig/sentdm/models/contact_list_response.rbs +20 -263
  158. data/sig/sentdm/models/contact_message_summary.rbs +84 -0
  159. data/sig/sentdm/models/contact_response.rbs +118 -0
  160. data/sig/sentdm/models/conversation_messages_list.rbs +240 -0
  161. data/sig/sentdm/models/error_detail.rbs +39 -0
  162. data/sig/sentdm/models/inbound_message_event_payload.rbs +10 -14
  163. data/sig/sentdm/models/me_retrieve_response.rbs +28 -176
  164. data/sig/sentdm/models/message_event_payload.rbs +5 -7
  165. data/sig/sentdm/models/message_retrieve_activities_response.rbs +14 -142
  166. data/sig/sentdm/models/message_retrieve_status_response.rbs +9 -71
  167. data/sig/sentdm/models/message_send_response.rbs +9 -71
  168. data/sig/sentdm/models/mutation_request.rbs +15 -0
  169. data/sig/sentdm/models/number_lookup_response.rbs +9 -71
  170. data/sig/sentdm/models/pagination_meta.rbs +67 -0
  171. data/sig/sentdm/models/payment_details.rbs +30 -0
  172. data/sig/sentdm/models/profile_complete_response.rbs +9 -71
  173. data/sig/sentdm/models/profile_create_params.rbs +12 -263
  174. data/sig/sentdm/models/profile_delete_params.rbs +6 -10
  175. data/sig/sentdm/models/profile_detail.rbs +461 -0
  176. data/sig/sentdm/models/profile_list_response.rbs +20 -606
  177. data/sig/sentdm/models/profile_settings.rbs +50 -0
  178. data/sig/sentdm/models/profile_update_params.rbs +12 -263
  179. data/sig/sentdm/models/profiles/api_response_of_brand_campaign.rbs +41 -0
  180. data/sig/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbs +41 -0
  181. data/sig/sentdm/models/profiles/brand_campaign.rbs +194 -0
  182. data/sig/sentdm/models/profiles/campaign_create_params.rbs +4 -108
  183. data/sig/sentdm/models/profiles/campaign_data.rbs +87 -0
  184. data/sig/sentdm/models/profiles/campaign_delete_params.rbs +8 -15
  185. data/sig/sentdm/models/profiles/campaign_update_params.rbs +4 -108
  186. data/sig/sentdm/models/profiles/campaign_use_case.rbs +66 -0
  187. data/sig/sentdm/models/profiles/campaign_use_case_data.rbs +27 -0
  188. data/sig/sentdm/models/template.rbs +84 -0
  189. data/sig/sentdm/models/template_event_payload.rbs +13 -17
  190. data/sig/sentdm/models/template_list_response.rbs +19 -230
  191. data/sig/sentdm/models/user_list_response.rbs +20 -224
  192. data/sig/sentdm/models/user_remove_params.rbs +6 -10
  193. data/sig/sentdm/models/user_response.rbs +79 -0
  194. data/sig/sentdm/models/webhook_event_type.rbs +51 -0
  195. data/sig/sentdm/models/webhook_list_event_types_response.rbs +20 -196
  196. data/sig/sentdm/models/webhook_list_events_response.rbs +14 -142
  197. data/sig/sentdm/models/webhook_list_response.rbs +20 -255
  198. data/sig/sentdm/models/webhook_response.rbs +110 -0
  199. data/sig/sentdm/models/webhook_rotate_secret_params.rbs +8 -17
  200. data/sig/sentdm/models/webhook_rotate_secret_response.rbs +9 -71
  201. data/sig/sentdm/models/webhook_test_response.rbs +9 -71
  202. data/sig/sentdm/models.rbs +52 -0
  203. data/sig/sentdm/resources/contacts.rbs +4 -4
  204. data/sig/sentdm/resources/conversations.rbs +2 -2
  205. data/sig/sentdm/resources/profiles/campaigns.rbs +5 -5
  206. data/sig/sentdm/resources/profiles.rbs +9 -9
  207. data/sig/sentdm/resources/templates.rbs +3 -3
  208. data/sig/sentdm/resources/users.rbs +3 -3
  209. data/sig/sentdm/resources/webhooks.rbs +4 -4
  210. metadata +98 -68
  211. data/lib/sentdm/models/contact_create_response.rb +0 -249
  212. data/lib/sentdm/models/contact_retrieve_message_summary_response.rb +0 -186
  213. data/lib/sentdm/models/contact_retrieve_response.rb +0 -249
  214. data/lib/sentdm/models/contact_update_response.rb +0 -249
  215. data/lib/sentdm/models/conversation_list_messages_response.rb +0 -436
  216. data/lib/sentdm/models/conversation_list_response.rb +0 -433
  217. data/lib/sentdm/models/profile_create_response.rb +0 -760
  218. data/lib/sentdm/models/profile_retrieve_response.rb +0 -762
  219. data/lib/sentdm/models/profile_update_response.rb +0 -760
  220. data/lib/sentdm/models/profiles/campaign_create_response.rb +0 -420
  221. data/lib/sentdm/models/profiles/campaign_list_response.rb +0 -421
  222. data/lib/sentdm/models/profiles/campaign_update_response.rb +0 -420
  223. data/lib/sentdm/models/template_create_response.rb +0 -209
  224. data/lib/sentdm/models/template_retrieve_response.rb +0 -209
  225. data/lib/sentdm/models/template_update_response.rb +0 -209
  226. data/lib/sentdm/models/user_invite_response.rb +0 -201
  227. data/lib/sentdm/models/user_retrieve_response.rb +0 -201
  228. data/lib/sentdm/models/user_update_role_response.rb +0 -201
  229. data/lib/sentdm/models/webhook_create_response.rb +0 -229
  230. data/lib/sentdm/models/webhook_retrieve_response.rb +0 -229
  231. data/lib/sentdm/models/webhook_toggle_status_response.rb +0 -229
  232. data/lib/sentdm/models/webhook_update_response.rb +0 -229
  233. data/rbi/sentdm/models/contact_create_response.rbi +0 -407
  234. data/rbi/sentdm/models/contact_retrieve_message_summary_response.rbi +0 -397
  235. data/rbi/sentdm/models/contact_retrieve_response.rbi +0 -409
  236. data/rbi/sentdm/models/contact_update_response.rbi +0 -407
  237. data/rbi/sentdm/models/conversation_list_messages_response.rbi +0 -843
  238. data/rbi/sentdm/models/conversation_list_response.rbi +0 -819
  239. data/rbi/sentdm/models/profile_create_response.rbi +0 -1226
  240. data/rbi/sentdm/models/profile_retrieve_response.rbi +0 -1230
  241. data/rbi/sentdm/models/profile_update_response.rbi +0 -1226
  242. data/rbi/sentdm/models/profiles/campaign_create_response.rbi +0 -674
  243. data/rbi/sentdm/models/profiles/campaign_list_response.rbi +0 -667
  244. data/rbi/sentdm/models/profiles/campaign_update_response.rbi +0 -674
  245. data/rbi/sentdm/models/template_create_response.rbi +0 -349
  246. data/rbi/sentdm/models/template_retrieve_response.rbi +0 -355
  247. data/rbi/sentdm/models/template_update_response.rbi +0 -349
  248. data/rbi/sentdm/models/user_invite_response.rbi +0 -336
  249. data/rbi/sentdm/models/user_retrieve_response.rbi +0 -336
  250. data/rbi/sentdm/models/user_update_role_response.rbi +0 -341
  251. data/rbi/sentdm/models/webhook_create_response.rbi +0 -361
  252. data/rbi/sentdm/models/webhook_retrieve_response.rbi +0 -363
  253. data/rbi/sentdm/models/webhook_toggle_status_response.rbi +0 -379
  254. data/rbi/sentdm/models/webhook_update_response.rbi +0 -361
  255. data/sig/sentdm/models/contact_create_response.rbs +0 -216
  256. data/sig/sentdm/models/contact_retrieve_message_summary_response.rbs +0 -182
  257. data/sig/sentdm/models/contact_retrieve_response.rbs +0 -216
  258. data/sig/sentdm/models/contact_update_response.rbs +0 -216
  259. data/sig/sentdm/models/conversation_list_messages_response.rbs +0 -404
  260. data/sig/sentdm/models/conversation_list_response.rbs +0 -404
  261. data/sig/sentdm/models/profile_create_response.rbs +0 -559
  262. data/sig/sentdm/models/profile_retrieve_response.rbs +0 -559
  263. data/sig/sentdm/models/profile_update_response.rbs +0 -559
  264. data/sig/sentdm/models/profiles/campaign_create_response.rbs +0 -357
  265. data/sig/sentdm/models/profiles/campaign_list_response.rbs +0 -357
  266. data/sig/sentdm/models/profiles/campaign_update_response.rbs +0 -357
  267. data/sig/sentdm/models/template_create_response.rbs +0 -182
  268. data/sig/sentdm/models/template_retrieve_response.rbs +0 -182
  269. data/sig/sentdm/models/template_update_response.rbs +0 -182
  270. data/sig/sentdm/models/user_invite_response.rbs +0 -177
  271. data/sig/sentdm/models/user_retrieve_response.rbs +0 -177
  272. data/sig/sentdm/models/user_update_role_response.rbs +0 -177
  273. data/sig/sentdm/models/webhook_create_response.rbs +0 -208
  274. data/sig/sentdm/models/webhook_retrieve_response.rbs +0 -208
  275. data/sig/sentdm/models/webhook_toggle_status_response.rbs +0 -208
  276. data/sig/sentdm/models/webhook_update_response.rbs +0 -208
@@ -0,0 +1,158 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Profiles
6
+ class CampaignData < Sentdm::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(Sentdm::Profiles::CampaignData, Sentdm::Internal::AnyHash)
10
+ end
11
+
12
+ # Campaign description
13
+ sig { returns(String) }
14
+ attr_accessor :description
15
+
16
+ # Campaign name
17
+ sig { returns(String) }
18
+ attr_accessor :name
19
+
20
+ # Campaign type (e.g., "KYC", "App").
21
+ #
22
+ # Still required of a caller, and consulted by nothing. It named the signup path
23
+ # that produced the campaign, was written to a column no query filters on, no TCR
24
+ # payload carries and no fee or status decision reads, and is now defaulted at the
25
+ # entity instead. It stays required so that a request which was valid before is
26
+ # still valid — dropping it would be the client-visible change, not keeping it.
27
+ sig { returns(String) }
28
+ attr_accessor :type
29
+
30
+ # List of use cases with sample messages
31
+ sig { returns(T::Array[Sentdm::Profiles::CampaignUseCaseData]) }
32
+ attr_accessor :use_cases
33
+
34
+ # Comma-separated keywords that trigger help message (e.g., "HELP, INFO, SUPPORT")
35
+ sig { returns(T.nilable(String)) }
36
+ attr_accessor :help_keywords
37
+
38
+ # Message sent when user requests help
39
+ sig { returns(T.nilable(String)) }
40
+ attr_accessor :help_message
41
+
42
+ # Description of how messages flow in the campaign
43
+ sig { returns(T.nilable(String)) }
44
+ attr_accessor :message_flow
45
+
46
+ # Comma-separated keywords that trigger opt-in (e.g., "YES, START, SUBSCRIBE")
47
+ sig { returns(T.nilable(String)) }
48
+ attr_accessor :optin_keywords
49
+
50
+ # Message sent when user opts in
51
+ sig { returns(T.nilable(String)) }
52
+ attr_accessor :optin_message
53
+
54
+ # Comma-separated keywords that trigger opt-out (e.g., "STOP, UNSUBSCRIBE, END")
55
+ sig { returns(T.nilable(String)) }
56
+ attr_accessor :optout_keywords
57
+
58
+ # Message sent when user opts out
59
+ sig { returns(T.nilable(String)) }
60
+ attr_accessor :optout_message
61
+
62
+ # URL to privacy policy
63
+ sig { returns(T.nilable(String)) }
64
+ attr_accessor :privacy_policy_link
65
+
66
+ # URL to terms and conditions
67
+ sig { returns(T.nilable(String)) }
68
+ attr_accessor :terms_and_conditions_link
69
+
70
+ # Expected messaging volume for this campaign. Numeric string (e.g. "1999",
71
+ # "5000"). Values below 2000 bill at the low-volume tier.
72
+ sig { returns(T.nilable(String)) }
73
+ attr_accessor :volume
74
+
75
+ # Campaign data for create or update operation
76
+ sig do
77
+ params(
78
+ description: String,
79
+ name: String,
80
+ type: String,
81
+ use_cases: T::Array[Sentdm::Profiles::CampaignUseCaseData::OrHash],
82
+ help_keywords: T.nilable(String),
83
+ help_message: T.nilable(String),
84
+ message_flow: T.nilable(String),
85
+ optin_keywords: T.nilable(String),
86
+ optin_message: T.nilable(String),
87
+ optout_keywords: T.nilable(String),
88
+ optout_message: T.nilable(String),
89
+ privacy_policy_link: T.nilable(String),
90
+ terms_and_conditions_link: T.nilable(String),
91
+ volume: T.nilable(String)
92
+ ).returns(T.attached_class)
93
+ end
94
+ def self.new(
95
+ # Campaign description
96
+ description:,
97
+ # Campaign name
98
+ name:,
99
+ # Campaign type (e.g., "KYC", "App").
100
+ #
101
+ # Still required of a caller, and consulted by nothing. It named the signup path
102
+ # that produced the campaign, was written to a column no query filters on, no TCR
103
+ # payload carries and no fee or status decision reads, and is now defaulted at the
104
+ # entity instead. It stays required so that a request which was valid before is
105
+ # still valid — dropping it would be the client-visible change, not keeping it.
106
+ type:,
107
+ # List of use cases with sample messages
108
+ use_cases:,
109
+ # Comma-separated keywords that trigger help message (e.g., "HELP, INFO, SUPPORT")
110
+ help_keywords: nil,
111
+ # Message sent when user requests help
112
+ help_message: nil,
113
+ # Description of how messages flow in the campaign
114
+ message_flow: nil,
115
+ # Comma-separated keywords that trigger opt-in (e.g., "YES, START, SUBSCRIBE")
116
+ optin_keywords: nil,
117
+ # Message sent when user opts in
118
+ optin_message: nil,
119
+ # Comma-separated keywords that trigger opt-out (e.g., "STOP, UNSUBSCRIBE, END")
120
+ optout_keywords: nil,
121
+ # Message sent when user opts out
122
+ optout_message: nil,
123
+ # URL to privacy policy
124
+ privacy_policy_link: nil,
125
+ # URL to terms and conditions
126
+ terms_and_conditions_link: nil,
127
+ # Expected messaging volume for this campaign. Numeric string (e.g. "1999",
128
+ # "5000"). Values below 2000 bill at the low-volume tier.
129
+ volume: nil
130
+ )
131
+ end
132
+
133
+ sig do
134
+ override.returns(
135
+ {
136
+ description: String,
137
+ name: String,
138
+ type: String,
139
+ use_cases: T::Array[Sentdm::Profiles::CampaignUseCaseData],
140
+ help_keywords: T.nilable(String),
141
+ help_message: T.nilable(String),
142
+ message_flow: T.nilable(String),
143
+ optin_keywords: T.nilable(String),
144
+ optin_message: T.nilable(String),
145
+ optout_keywords: T.nilable(String),
146
+ optout_message: T.nilable(String),
147
+ privacy_policy_link: T.nilable(String),
148
+ terms_and_conditions_link: T.nilable(String),
149
+ volume: T.nilable(String)
150
+ }
151
+ )
152
+ end
153
+ def to_hash
154
+ end
155
+ end
156
+ end
157
+ end
158
+ end
@@ -3,7 +3,7 @@
3
3
  module Sentdm
4
4
  module Models
5
5
  module Profiles
6
- class CampaignDeleteParams < Sentdm::Internal::Type::BaseModel
6
+ class CampaignDeleteParams < Sentdm::Models::MutationRequest
7
7
  extend Sentdm::Internal::Type::RequestParameters::Converter
8
8
  include Sentdm::Internal::Type::RequestParameters
9
9
 
@@ -21,14 +21,6 @@ module Sentdm
21
21
  sig { returns(String) }
22
22
  attr_accessor :campaign_id
23
23
 
24
- # Sandbox flag - when true, the operation is simulated without side effects Useful
25
- # for testing integrations without actual execution
26
- sig { returns(T.nilable(T::Boolean)) }
27
- attr_reader :sandbox
28
-
29
- sig { params(sandbox: T::Boolean).void }
30
- attr_writer :sandbox
31
-
32
24
  sig { returns(T.nilable(String)) }
33
25
  attr_reader :x_profile_id
34
26
 
@@ -39,7 +31,6 @@ module Sentdm
39
31
  params(
40
32
  profile_id: String,
41
33
  campaign_id: String,
42
- sandbox: T::Boolean,
43
34
  x_profile_id: String,
44
35
  request_options: Sentdm::RequestOptions::OrHash
45
36
  ).returns(T.attached_class)
@@ -47,9 +38,6 @@ module Sentdm
47
38
  def self.new(
48
39
  profile_id:,
49
40
  campaign_id:,
50
- # Sandbox flag - when true, the operation is simulated without side effects Useful
51
- # for testing integrations without actual execution
52
- sandbox: nil,
53
41
  x_profile_id: nil,
54
42
  request_options: {}
55
43
  )
@@ -60,7 +48,6 @@ module Sentdm
60
48
  {
61
49
  profile_id: String,
62
50
  campaign_id: String,
63
- sandbox: T::Boolean,
64
51
  x_profile_id: String,
65
52
  request_options: Sentdm::RequestOptions
66
53
  }
@@ -22,14 +22,10 @@ module Sentdm
22
22
  attr_accessor :campaign_id
23
23
 
24
24
  # Campaign data for create or update operation
25
- sig { returns(Sentdm::Profiles::CampaignUpdateParams::Campaign) }
25
+ sig { returns(Sentdm::Profiles::CampaignData) }
26
26
  attr_reader :campaign
27
27
 
28
- sig do
29
- params(
30
- campaign: Sentdm::Profiles::CampaignUpdateParams::Campaign::OrHash
31
- ).void
32
- end
28
+ sig { params(campaign: Sentdm::Profiles::CampaignData::OrHash).void }
33
29
  attr_writer :campaign
34
30
 
35
31
  # Sandbox flag - when true, the operation is simulated without side effects Useful
@@ -56,7 +52,7 @@ module Sentdm
56
52
  params(
57
53
  profile_id: String,
58
54
  campaign_id: String,
59
- campaign: Sentdm::Profiles::CampaignUpdateParams::Campaign::OrHash,
55
+ campaign: Sentdm::Profiles::CampaignData::OrHash,
60
56
  sandbox: T::Boolean,
61
57
  idempotency_key: String,
62
58
  x_profile_id: String,
@@ -82,7 +78,7 @@ module Sentdm
82
78
  {
83
79
  profile_id: String,
84
80
  campaign_id: String,
85
- campaign: Sentdm::Profiles::CampaignUpdateParams::Campaign,
81
+ campaign: Sentdm::Profiles::CampaignData,
86
82
  sandbox: T::Boolean,
87
83
  idempotency_key: String,
88
84
  x_profile_id: String,
@@ -92,216 +88,6 @@ module Sentdm
92
88
  end
93
89
  def to_hash
94
90
  end
95
-
96
- class Campaign < Sentdm::Internal::Type::BaseModel
97
- OrHash =
98
- T.type_alias do
99
- T.any(
100
- Sentdm::Profiles::CampaignUpdateParams::Campaign,
101
- Sentdm::Internal::AnyHash
102
- )
103
- end
104
-
105
- # Campaign description
106
- sig { returns(String) }
107
- attr_accessor :description
108
-
109
- # Campaign name
110
- sig { returns(String) }
111
- attr_accessor :name
112
-
113
- # Campaign type (e.g., "KYC", "App").
114
- #
115
- # Still required of a caller, and consulted by nothing. It named the signup path
116
- # that produced the campaign, was written to a column no query filters on, no TCR
117
- # payload carries and no fee or status decision reads, and is now defaulted at the
118
- # entity instead. It stays required so that a request which was valid before is
119
- # still valid — dropping it would be the client-visible change, not keeping it.
120
- sig { returns(String) }
121
- attr_accessor :type
122
-
123
- # List of use cases with sample messages
124
- sig do
125
- returns(
126
- T::Array[
127
- Sentdm::Profiles::CampaignUpdateParams::Campaign::UseCase
128
- ]
129
- )
130
- end
131
- attr_accessor :use_cases
132
-
133
- # Comma-separated keywords that trigger help message (e.g., "HELP, INFO, SUPPORT")
134
- sig { returns(T.nilable(String)) }
135
- attr_accessor :help_keywords
136
-
137
- # Message sent when user requests help
138
- sig { returns(T.nilable(String)) }
139
- attr_accessor :help_message
140
-
141
- # Description of how messages flow in the campaign
142
- sig { returns(T.nilable(String)) }
143
- attr_accessor :message_flow
144
-
145
- # Comma-separated keywords that trigger opt-in (e.g., "YES, START, SUBSCRIBE")
146
- sig { returns(T.nilable(String)) }
147
- attr_accessor :optin_keywords
148
-
149
- # Message sent when user opts in
150
- sig { returns(T.nilable(String)) }
151
- attr_accessor :optin_message
152
-
153
- # Comma-separated keywords that trigger opt-out (e.g., "STOP, UNSUBSCRIBE, END")
154
- sig { returns(T.nilable(String)) }
155
- attr_accessor :optout_keywords
156
-
157
- # Message sent when user opts out
158
- sig { returns(T.nilable(String)) }
159
- attr_accessor :optout_message
160
-
161
- # URL to privacy policy
162
- sig { returns(T.nilable(String)) }
163
- attr_accessor :privacy_policy_link
164
-
165
- # URL to terms and conditions
166
- sig { returns(T.nilable(String)) }
167
- attr_accessor :terms_and_conditions_link
168
-
169
- # Expected messaging volume for this campaign. Numeric string (e.g. "1999",
170
- # "5000"). Values below 2000 bill at the low-volume tier.
171
- sig { returns(T.nilable(String)) }
172
- attr_accessor :volume
173
-
174
- # Campaign data for create or update operation
175
- sig do
176
- params(
177
- description: String,
178
- name: String,
179
- type: String,
180
- use_cases:
181
- T::Array[
182
- Sentdm::Profiles::CampaignUpdateParams::Campaign::UseCase::OrHash
183
- ],
184
- help_keywords: T.nilable(String),
185
- help_message: T.nilable(String),
186
- message_flow: T.nilable(String),
187
- optin_keywords: T.nilable(String),
188
- optin_message: T.nilable(String),
189
- optout_keywords: T.nilable(String),
190
- optout_message: T.nilable(String),
191
- privacy_policy_link: T.nilable(String),
192
- terms_and_conditions_link: T.nilable(String),
193
- volume: T.nilable(String)
194
- ).returns(T.attached_class)
195
- end
196
- def self.new(
197
- # Campaign description
198
- description:,
199
- # Campaign name
200
- name:,
201
- # Campaign type (e.g., "KYC", "App").
202
- #
203
- # Still required of a caller, and consulted by nothing. It named the signup path
204
- # that produced the campaign, was written to a column no query filters on, no TCR
205
- # payload carries and no fee or status decision reads, and is now defaulted at the
206
- # entity instead. It stays required so that a request which was valid before is
207
- # still valid — dropping it would be the client-visible change, not keeping it.
208
- type:,
209
- # List of use cases with sample messages
210
- use_cases:,
211
- # Comma-separated keywords that trigger help message (e.g., "HELP, INFO, SUPPORT")
212
- help_keywords: nil,
213
- # Message sent when user requests help
214
- help_message: nil,
215
- # Description of how messages flow in the campaign
216
- message_flow: nil,
217
- # Comma-separated keywords that trigger opt-in (e.g., "YES, START, SUBSCRIBE")
218
- optin_keywords: nil,
219
- # Message sent when user opts in
220
- optin_message: nil,
221
- # Comma-separated keywords that trigger opt-out (e.g., "STOP, UNSUBSCRIBE, END")
222
- optout_keywords: nil,
223
- # Message sent when user opts out
224
- optout_message: nil,
225
- # URL to privacy policy
226
- privacy_policy_link: nil,
227
- # URL to terms and conditions
228
- terms_and_conditions_link: nil,
229
- # Expected messaging volume for this campaign. Numeric string (e.g. "1999",
230
- # "5000"). Values below 2000 bill at the low-volume tier.
231
- volume: nil
232
- )
233
- end
234
-
235
- sig do
236
- override.returns(
237
- {
238
- description: String,
239
- name: String,
240
- type: String,
241
- use_cases:
242
- T::Array[
243
- Sentdm::Profiles::CampaignUpdateParams::Campaign::UseCase
244
- ],
245
- help_keywords: T.nilable(String),
246
- help_message: T.nilable(String),
247
- message_flow: T.nilable(String),
248
- optin_keywords: T.nilable(String),
249
- optin_message: T.nilable(String),
250
- optout_keywords: T.nilable(String),
251
- optout_message: T.nilable(String),
252
- privacy_policy_link: T.nilable(String),
253
- terms_and_conditions_link: T.nilable(String),
254
- volume: T.nilable(String)
255
- }
256
- )
257
- end
258
- def to_hash
259
- end
260
-
261
- class UseCase < Sentdm::Internal::Type::BaseModel
262
- OrHash =
263
- T.type_alias do
264
- T.any(
265
- Sentdm::Profiles::CampaignUpdateParams::Campaign::UseCase,
266
- Sentdm::Internal::AnyHash
267
- )
268
- end
269
-
270
- sig { returns(Sentdm::Profiles::MessagingUseCaseUs::OrSymbol) }
271
- attr_accessor :messaging_use_case_us
272
-
273
- # Sample messages for this use case (1-5 messages, max 1024 characters each)
274
- sig { returns(T::Array[String]) }
275
- attr_accessor :sample_messages
276
-
277
- # Campaign use case with sample messages
278
- sig do
279
- params(
280
- messaging_use_case_us:
281
- Sentdm::Profiles::MessagingUseCaseUs::OrSymbol,
282
- sample_messages: T::Array[String]
283
- ).returns(T.attached_class)
284
- end
285
- def self.new(
286
- messaging_use_case_us:,
287
- # Sample messages for this use case (1-5 messages, max 1024 characters each)
288
- sample_messages:
289
- )
290
- end
291
-
292
- sig do
293
- override.returns(
294
- {
295
- messaging_use_case_us:
296
- Sentdm::Profiles::MessagingUseCaseUs::OrSymbol,
297
- sample_messages: T::Array[String]
298
- }
299
- )
300
- end
301
- def to_hash
302
- end
303
- end
304
- end
305
91
  end
306
92
  end
307
93
  end
@@ -0,0 +1,110 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Profiles
6
+ class CampaignUseCase < Sentdm::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(Sentdm::Profiles::CampaignUseCase, Sentdm::Internal::AnyHash)
10
+ end
11
+
12
+ sig { returns(T.nilable(String)) }
13
+ attr_reader :id
14
+
15
+ sig { params(id: String).void }
16
+ attr_writer :id
17
+
18
+ sig { returns(T.nilable(String)) }
19
+ attr_reader :campaign_id
20
+
21
+ sig { params(campaign_id: String).void }
22
+ attr_writer :campaign_id
23
+
24
+ sig { returns(T.nilable(Time)) }
25
+ attr_reader :created_at
26
+
27
+ sig { params(created_at: Time).void }
28
+ attr_writer :created_at
29
+
30
+ sig { returns(T.nilable(String)) }
31
+ attr_reader :customer_id
32
+
33
+ sig { params(customer_id: String).void }
34
+ attr_writer :customer_id
35
+
36
+ sig do
37
+ returns(T.nilable(Sentdm::Profiles::MessagingUseCaseUs::TaggedSymbol))
38
+ end
39
+ attr_reader :messaging_use_case_us
40
+
41
+ sig do
42
+ params(
43
+ messaging_use_case_us:
44
+ Sentdm::Profiles::MessagingUseCaseUs::OrSymbol
45
+ ).void
46
+ end
47
+ attr_writer :messaging_use_case_us
48
+
49
+ # Sample messages submitted to the registry for this use case.
50
+ sig { returns(T.nilable(T::Array[String])) }
51
+ attr_reader :sample_messages
52
+
53
+ sig { params(sample_messages: T::Array[String]).void }
54
+ attr_writer :sample_messages
55
+
56
+ sig { returns(T.nilable(Time)) }
57
+ attr_accessor :updated_at
58
+
59
+ # Customer-facing use-case representation for the public v3 campaign contract.
60
+ # Exists for the same reason as BrandCampaignV3Response: nesting the
61
+ # TcrCampaignUseCase database entity in a public response means any column added
62
+ # to that table silently becomes part of the customer-facing contract. This DTO is
63
+ # an explicit allowlist, so a new column stays invisible until it is added here on
64
+ # purpose. This mirrors exactly the fields the entity already serialized, so it
65
+ # removes nothing from the current response shape. It only closes the future-leak
66
+ # path.
67
+ sig do
68
+ params(
69
+ id: String,
70
+ campaign_id: String,
71
+ created_at: Time,
72
+ customer_id: String,
73
+ messaging_use_case_us:
74
+ Sentdm::Profiles::MessagingUseCaseUs::OrSymbol,
75
+ sample_messages: T::Array[String],
76
+ updated_at: T.nilable(Time)
77
+ ).returns(T.attached_class)
78
+ end
79
+ def self.new(
80
+ id: nil,
81
+ campaign_id: nil,
82
+ created_at: nil,
83
+ customer_id: nil,
84
+ messaging_use_case_us: nil,
85
+ # Sample messages submitted to the registry for this use case.
86
+ sample_messages: nil,
87
+ updated_at: nil
88
+ )
89
+ end
90
+
91
+ sig do
92
+ override.returns(
93
+ {
94
+ id: String,
95
+ campaign_id: String,
96
+ created_at: Time,
97
+ customer_id: String,
98
+ messaging_use_case_us:
99
+ Sentdm::Profiles::MessagingUseCaseUs::TaggedSymbol,
100
+ sample_messages: T::Array[String],
101
+ updated_at: T.nilable(Time)
102
+ }
103
+ )
104
+ end
105
+ def to_hash
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,51 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Profiles
6
+ class CampaignUseCaseData < Sentdm::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ Sentdm::Profiles::CampaignUseCaseData,
11
+ Sentdm::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ sig { returns(Sentdm::Profiles::MessagingUseCaseUs::OrSymbol) }
16
+ attr_accessor :messaging_use_case_us
17
+
18
+ # Sample messages for this use case (1-5 messages, max 1024 characters each)
19
+ sig { returns(T::Array[String]) }
20
+ attr_accessor :sample_messages
21
+
22
+ # Campaign use case with sample messages
23
+ sig do
24
+ params(
25
+ messaging_use_case_us:
26
+ Sentdm::Profiles::MessagingUseCaseUs::OrSymbol,
27
+ sample_messages: T::Array[String]
28
+ ).returns(T.attached_class)
29
+ end
30
+ def self.new(
31
+ messaging_use_case_us:,
32
+ # Sample messages for this use case (1-5 messages, max 1024 characters each)
33
+ sample_messages:
34
+ )
35
+ end
36
+
37
+ sig do
38
+ override.returns(
39
+ {
40
+ messaging_use_case_us:
41
+ Sentdm::Profiles::MessagingUseCaseUs::OrSymbol,
42
+ sample_messages: T::Array[String]
43
+ }
44
+ )
45
+ end
46
+ def to_hash
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end