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