sentdm 0.29.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 (265) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -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/me_retrieve_response.rb +12 -242
  25. data/lib/sentdm/models/message_retrieve_activities_response.rb +9 -159
  26. data/lib/sentdm/models/message_retrieve_status_response.rb +6 -74
  27. data/lib/sentdm/models/message_send_response.rb +6 -74
  28. data/lib/sentdm/models/mutation_request.rb +20 -0
  29. data/lib/sentdm/models/number_lookup_response.rb +6 -74
  30. data/lib/sentdm/models/pagination_meta.rb +84 -0
  31. data/lib/sentdm/models/payment_details.rb +40 -0
  32. data/lib/sentdm/models/profile_complete_response.rb +6 -74
  33. data/lib/sentdm/models/profile_create_params.rb +9 -345
  34. data/lib/sentdm/models/profile_delete_params.rb +2 -16
  35. data/lib/sentdm/models/profile_detail.rb +650 -0
  36. data/lib/sentdm/models/profile_list_response.rb +12 -815
  37. data/lib/sentdm/models/profile_settings.rb +85 -0
  38. data/lib/sentdm/models/profile_update_params.rb +9 -345
  39. data/lib/sentdm/models/profiles/api_response_of_brand_campaign.rb +45 -0
  40. data/lib/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rb +45 -0
  41. data/lib/sentdm/models/profiles/brand_campaign.rb +247 -0
  42. data/lib/sentdm/models/profiles/campaign_create_params.rb +3 -156
  43. data/lib/sentdm/models/profiles/campaign_data.rb +136 -0
  44. data/lib/sentdm/models/profiles/campaign_delete_params.rb +2 -17
  45. data/lib/sentdm/models/profiles/campaign_update_params.rb +3 -156
  46. data/lib/sentdm/models/profiles/campaign_use_case.rb +71 -0
  47. data/lib/sentdm/models/profiles/campaign_use_case_data.rb +29 -0
  48. data/lib/sentdm/models/template.rb +102 -0
  49. data/lib/sentdm/models/template_list_response.rb +12 -258
  50. data/lib/sentdm/models/user_list_response.rb +12 -249
  51. data/lib/sentdm/models/user_remove_params.rb +2 -16
  52. data/lib/sentdm/models/user_response.rb +94 -0
  53. data/lib/sentdm/models/webhook_event_type.rb +45 -0
  54. data/lib/sentdm/models/webhook_list_event_types_response.rb +12 -203
  55. data/lib/sentdm/models/webhook_list_events_response.rb +9 -157
  56. data/lib/sentdm/models/webhook_list_response.rb +12 -276
  57. data/lib/sentdm/models/webhook_response.rb +120 -0
  58. data/lib/sentdm/models/webhook_rotate_secret_params.rb +2 -17
  59. data/lib/sentdm/models/webhook_rotate_secret_response.rb +6 -74
  60. data/lib/sentdm/models/webhook_test_response.rb +6 -74
  61. data/lib/sentdm/models.rb +52 -0
  62. data/lib/sentdm/resources/contacts.rb +8 -8
  63. data/lib/sentdm/resources/conversations.rb +4 -4
  64. data/lib/sentdm/resources/profiles/campaigns.rb +8 -8
  65. data/lib/sentdm/resources/profiles.rb +12 -12
  66. data/lib/sentdm/resources/templates.rb +6 -6
  67. data/lib/sentdm/resources/users.rb +6 -6
  68. data/lib/sentdm/resources/webhooks.rb +8 -8
  69. data/lib/sentdm/version.rb +1 -1
  70. data/lib/sentdm.rb +32 -22
  71. data/rbi/sentdm/models/api_meta.rbi +55 -0
  72. data/rbi/sentdm/models/api_response_of_contact.rbi +74 -0
  73. data/rbi/sentdm/models/api_response_of_contact_message_summary.rbi +79 -0
  74. data/rbi/sentdm/models/api_response_of_conversation_messages_list.rbi +79 -0
  75. data/rbi/sentdm/models/api_response_of_profile_detail.rbi +74 -0
  76. data/rbi/sentdm/models/api_response_of_user.rbi +74 -0
  77. data/rbi/sentdm/models/api_response_template.rbi +74 -0
  78. data/rbi/sentdm/models/api_response_webhook.rbi +74 -0
  79. data/rbi/sentdm/models/billing_contact_info.rbi +65 -0
  80. data/rbi/sentdm/models/brand_business_info.rbi +162 -0
  81. data/rbi/sentdm/models/brand_compliance_info.rbi +76 -0
  82. data/rbi/sentdm/models/brand_contact_info.rbi +78 -0
  83. data/rbi/sentdm/models/brands_brand_data.rbi +65 -0
  84. data/rbi/sentdm/models/contact_delete_params.rbi +2 -19
  85. data/rbi/sentdm/models/contact_list_response.rbi +16 -522
  86. data/rbi/sentdm/models/contact_message_summary.rbi +144 -0
  87. data/rbi/sentdm/models/contact_response.rbi +200 -0
  88. data/rbi/sentdm/models/conversation_messages_list.rbi +419 -0
  89. data/rbi/sentdm/models/error_detail.rbi +66 -0
  90. data/rbi/sentdm/models/me_retrieve_response.rbi +16 -367
  91. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +12 -325
  92. data/rbi/sentdm/models/message_retrieve_status_response.rbi +8 -148
  93. data/rbi/sentdm/models/message_send_response.rbi +8 -135
  94. data/rbi/sentdm/models/mutation_request.rbi +32 -0
  95. data/rbi/sentdm/models/number_lookup_response.rbi +8 -135
  96. data/rbi/sentdm/models/pagination_meta.rbi +135 -0
  97. data/rbi/sentdm/models/payment_details.rbi +56 -0
  98. data/rbi/sentdm/models/profile_complete_response.rbi +8 -137
  99. data/rbi/sentdm/models/profile_create_params.rbi +12 -546
  100. data/rbi/sentdm/models/profile_delete_params.rbi +2 -19
  101. data/rbi/sentdm/models/profile_detail.rbi +918 -0
  102. data/rbi/sentdm/models/profile_list_response.rbi +16 -1347
  103. data/rbi/sentdm/models/profile_settings.rbi +102 -0
  104. data/rbi/sentdm/models/profile_update_params.rbi +12 -546
  105. data/rbi/sentdm/models/profiles/api_response_of_brand_campaign.rbi +81 -0
  106. data/rbi/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbi +76 -0
  107. data/rbi/sentdm/models/profiles/brand_campaign.rbi +299 -0
  108. data/rbi/sentdm/models/profiles/campaign_create_params.rbi +4 -218
  109. data/rbi/sentdm/models/profiles/campaign_data.rbi +158 -0
  110. data/rbi/sentdm/models/profiles/campaign_delete_params.rbi +1 -14
  111. data/rbi/sentdm/models/profiles/campaign_update_params.rbi +4 -218
  112. data/rbi/sentdm/models/profiles/campaign_use_case.rbi +110 -0
  113. data/rbi/sentdm/models/profiles/campaign_use_case_data.rbi +51 -0
  114. data/rbi/sentdm/models/template.rbi +139 -0
  115. data/rbi/sentdm/models/template_list_response.rbi +16 -464
  116. data/rbi/sentdm/models/user_list_response.rbi +16 -444
  117. data/rbi/sentdm/models/user_remove_params.rbi +2 -19
  118. data/rbi/sentdm/models/user_response.rbi +131 -0
  119. data/rbi/sentdm/models/webhook_event_type.rbi +74 -0
  120. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +16 -414
  121. data/rbi/sentdm/models/webhook_list_events_response.rbi +12 -314
  122. data/rbi/sentdm/models/webhook_list_response.rbi +16 -475
  123. data/rbi/sentdm/models/webhook_response.rbi +153 -0
  124. data/rbi/sentdm/models/webhook_rotate_secret_params.rbi +1 -14
  125. data/rbi/sentdm/models/webhook_rotate_secret_response.rbi +8 -148
  126. data/rbi/sentdm/models/webhook_test_response.rbi +8 -135
  127. data/rbi/sentdm/models.rbi +54 -0
  128. data/rbi/sentdm/resources/contacts.rbi +4 -4
  129. data/rbi/sentdm/resources/conversations.rbi +2 -2
  130. data/rbi/sentdm/resources/profiles/campaigns.rbi +5 -5
  131. data/rbi/sentdm/resources/profiles.rbi +9 -13
  132. data/rbi/sentdm/resources/templates.rbi +3 -3
  133. data/rbi/sentdm/resources/users.rbi +3 -3
  134. data/rbi/sentdm/resources/webhooks.rbi +4 -4
  135. data/sig/sentdm/models/api_meta.rbs +27 -0
  136. data/sig/sentdm/models/api_response_of_contact.rbs +39 -0
  137. data/sig/sentdm/models/api_response_of_contact_message_summary.rbs +39 -0
  138. data/sig/sentdm/models/api_response_of_conversation_messages_list.rbs +39 -0
  139. data/sig/sentdm/models/api_response_of_profile_detail.rbs +39 -0
  140. data/sig/sentdm/models/api_response_of_user.rbs +39 -0
  141. data/sig/sentdm/models/api_response_template.rbs +39 -0
  142. data/sig/sentdm/models/api_response_webhook.rbs +39 -0
  143. data/sig/sentdm/models/billing_contact_info.rbs +30 -0
  144. data/sig/sentdm/models/brand_business_info.rbs +89 -0
  145. data/sig/sentdm/models/brand_compliance_info.rbs +45 -0
  146. data/sig/sentdm/models/brand_contact_info.rbs +45 -0
  147. data/sig/sentdm/models/brands_brand_data.rbs +30 -0
  148. data/sig/sentdm/models/contact_delete_params.rbs +6 -10
  149. data/sig/sentdm/models/contact_list_response.rbs +20 -263
  150. data/sig/sentdm/models/contact_message_summary.rbs +84 -0
  151. data/sig/sentdm/models/contact_response.rbs +118 -0
  152. data/sig/sentdm/models/conversation_messages_list.rbs +240 -0
  153. data/sig/sentdm/models/error_detail.rbs +39 -0
  154. data/sig/sentdm/models/me_retrieve_response.rbs +18 -176
  155. data/sig/sentdm/models/message_retrieve_activities_response.rbs +14 -142
  156. data/sig/sentdm/models/message_retrieve_status_response.rbs +9 -71
  157. data/sig/sentdm/models/message_send_response.rbs +9 -71
  158. data/sig/sentdm/models/mutation_request.rbs +15 -0
  159. data/sig/sentdm/models/number_lookup_response.rbs +9 -71
  160. data/sig/sentdm/models/pagination_meta.rbs +67 -0
  161. data/sig/sentdm/models/payment_details.rbs +30 -0
  162. data/sig/sentdm/models/profile_complete_response.rbs +9 -71
  163. data/sig/sentdm/models/profile_create_params.rbs +12 -263
  164. data/sig/sentdm/models/profile_delete_params.rbs +6 -10
  165. data/sig/sentdm/models/profile_detail.rbs +461 -0
  166. data/sig/sentdm/models/profile_list_response.rbs +20 -606
  167. data/sig/sentdm/models/profile_settings.rbs +50 -0
  168. data/sig/sentdm/models/profile_update_params.rbs +12 -263
  169. data/sig/sentdm/models/profiles/api_response_of_brand_campaign.rbs +41 -0
  170. data/sig/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbs +41 -0
  171. data/sig/sentdm/models/profiles/brand_campaign.rbs +194 -0
  172. data/sig/sentdm/models/profiles/campaign_create_params.rbs +4 -108
  173. data/sig/sentdm/models/profiles/campaign_data.rbs +87 -0
  174. data/sig/sentdm/models/profiles/campaign_delete_params.rbs +8 -15
  175. data/sig/sentdm/models/profiles/campaign_update_params.rbs +4 -108
  176. data/sig/sentdm/models/profiles/campaign_use_case.rbs +66 -0
  177. data/sig/sentdm/models/profiles/campaign_use_case_data.rbs +27 -0
  178. data/sig/sentdm/models/template.rbs +84 -0
  179. data/sig/sentdm/models/template_list_response.rbs +19 -230
  180. data/sig/sentdm/models/user_list_response.rbs +20 -224
  181. data/sig/sentdm/models/user_remove_params.rbs +6 -10
  182. data/sig/sentdm/models/user_response.rbs +79 -0
  183. data/sig/sentdm/models/webhook_event_type.rbs +51 -0
  184. data/sig/sentdm/models/webhook_list_event_types_response.rbs +20 -196
  185. data/sig/sentdm/models/webhook_list_events_response.rbs +14 -142
  186. data/sig/sentdm/models/webhook_list_response.rbs +20 -255
  187. data/sig/sentdm/models/webhook_response.rbs +110 -0
  188. data/sig/sentdm/models/webhook_rotate_secret_params.rbs +8 -17
  189. data/sig/sentdm/models/webhook_rotate_secret_response.rbs +9 -71
  190. data/sig/sentdm/models/webhook_test_response.rbs +9 -71
  191. data/sig/sentdm/models.rbs +52 -0
  192. data/sig/sentdm/resources/contacts.rbs +4 -4
  193. data/sig/sentdm/resources/conversations.rbs +2 -2
  194. data/sig/sentdm/resources/profiles/campaigns.rbs +5 -5
  195. data/sig/sentdm/resources/profiles.rbs +9 -9
  196. data/sig/sentdm/resources/templates.rbs +3 -3
  197. data/sig/sentdm/resources/users.rbs +3 -3
  198. data/sig/sentdm/resources/webhooks.rbs +4 -4
  199. metadata +98 -68
  200. data/lib/sentdm/models/contact_create_response.rb +0 -249
  201. data/lib/sentdm/models/contact_retrieve_message_summary_response.rb +0 -186
  202. data/lib/sentdm/models/contact_retrieve_response.rb +0 -249
  203. data/lib/sentdm/models/contact_update_response.rb +0 -249
  204. data/lib/sentdm/models/conversation_list_messages_response.rb +0 -436
  205. data/lib/sentdm/models/conversation_list_response.rb +0 -433
  206. data/lib/sentdm/models/profile_create_response.rb +0 -760
  207. data/lib/sentdm/models/profile_retrieve_response.rb +0 -762
  208. data/lib/sentdm/models/profile_update_response.rb +0 -760
  209. data/lib/sentdm/models/profiles/campaign_create_response.rb +0 -420
  210. data/lib/sentdm/models/profiles/campaign_list_response.rb +0 -421
  211. data/lib/sentdm/models/profiles/campaign_update_response.rb +0 -420
  212. data/lib/sentdm/models/template_create_response.rb +0 -209
  213. data/lib/sentdm/models/template_retrieve_response.rb +0 -209
  214. data/lib/sentdm/models/template_update_response.rb +0 -209
  215. data/lib/sentdm/models/user_invite_response.rb +0 -201
  216. data/lib/sentdm/models/user_retrieve_response.rb +0 -201
  217. data/lib/sentdm/models/user_update_role_response.rb +0 -201
  218. data/lib/sentdm/models/webhook_create_response.rb +0 -229
  219. data/lib/sentdm/models/webhook_retrieve_response.rb +0 -229
  220. data/lib/sentdm/models/webhook_toggle_status_response.rb +0 -229
  221. data/lib/sentdm/models/webhook_update_response.rb +0 -229
  222. data/rbi/sentdm/models/contact_create_response.rbi +0 -407
  223. data/rbi/sentdm/models/contact_retrieve_message_summary_response.rbi +0 -397
  224. data/rbi/sentdm/models/contact_retrieve_response.rbi +0 -409
  225. data/rbi/sentdm/models/contact_update_response.rbi +0 -407
  226. data/rbi/sentdm/models/conversation_list_messages_response.rbi +0 -843
  227. data/rbi/sentdm/models/conversation_list_response.rbi +0 -819
  228. data/rbi/sentdm/models/profile_create_response.rbi +0 -1226
  229. data/rbi/sentdm/models/profile_retrieve_response.rbi +0 -1230
  230. data/rbi/sentdm/models/profile_update_response.rbi +0 -1226
  231. data/rbi/sentdm/models/profiles/campaign_create_response.rbi +0 -674
  232. data/rbi/sentdm/models/profiles/campaign_list_response.rbi +0 -667
  233. data/rbi/sentdm/models/profiles/campaign_update_response.rbi +0 -674
  234. data/rbi/sentdm/models/template_create_response.rbi +0 -349
  235. data/rbi/sentdm/models/template_retrieve_response.rbi +0 -355
  236. data/rbi/sentdm/models/template_update_response.rbi +0 -349
  237. data/rbi/sentdm/models/user_invite_response.rbi +0 -336
  238. data/rbi/sentdm/models/user_retrieve_response.rbi +0 -336
  239. data/rbi/sentdm/models/user_update_role_response.rbi +0 -341
  240. data/rbi/sentdm/models/webhook_create_response.rbi +0 -361
  241. data/rbi/sentdm/models/webhook_retrieve_response.rbi +0 -363
  242. data/rbi/sentdm/models/webhook_toggle_status_response.rbi +0 -379
  243. data/rbi/sentdm/models/webhook_update_response.rbi +0 -361
  244. data/sig/sentdm/models/contact_create_response.rbs +0 -216
  245. data/sig/sentdm/models/contact_retrieve_message_summary_response.rbs +0 -182
  246. data/sig/sentdm/models/contact_retrieve_response.rbs +0 -216
  247. data/sig/sentdm/models/contact_update_response.rbs +0 -216
  248. data/sig/sentdm/models/conversation_list_messages_response.rbs +0 -404
  249. data/sig/sentdm/models/conversation_list_response.rbs +0 -404
  250. data/sig/sentdm/models/profile_create_response.rbs +0 -559
  251. data/sig/sentdm/models/profile_retrieve_response.rbs +0 -559
  252. data/sig/sentdm/models/profile_update_response.rbs +0 -559
  253. data/sig/sentdm/models/profiles/campaign_create_response.rbs +0 -357
  254. data/sig/sentdm/models/profiles/campaign_list_response.rbs +0 -357
  255. data/sig/sentdm/models/profiles/campaign_update_response.rbs +0 -357
  256. data/sig/sentdm/models/template_create_response.rbs +0 -182
  257. data/sig/sentdm/models/template_retrieve_response.rbs +0 -182
  258. data/sig/sentdm/models/template_update_response.rbs +0 -182
  259. data/sig/sentdm/models/user_invite_response.rbs +0 -177
  260. data/sig/sentdm/models/user_retrieve_response.rbs +0 -177
  261. data/sig/sentdm/models/user_update_role_response.rbs +0 -177
  262. data/sig/sentdm/models/webhook_create_response.rbs +0 -208
  263. data/sig/sentdm/models/webhook_retrieve_response.rbs +0 -208
  264. data/sig/sentdm/models/webhook_toggle_status_response.rbs +0 -208
  265. 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