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,918 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ProfileDetail < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(Sentdm::ProfileDetail, Sentdm::Internal::AnyHash) }
8
+
9
+ # Profile unique identifier
10
+ sig { returns(T.nilable(String)) }
11
+ attr_reader :id
12
+
13
+ sig { params(id: String).void }
14
+ attr_writer :id
15
+
16
+ # Always false. A profile no longer shares contacts with sibling profiles — it
17
+ # sees only what it owns. Retained so existing v3 clients reading
18
+ # allow_contact_sharing keep deserializing; it carries no information.
19
+ sig { returns(T.nilable(T::Boolean)) }
20
+ attr_accessor :allow_contact_sharing
21
+
22
+ # Whether number changes are allowed during onboarding
23
+ sig { returns(T.nilable(T::Boolean)) }
24
+ attr_accessor :allow_number_change_during_onboarding
25
+
26
+ # Always false. A profile no longer shares templates with sibling profiles.
27
+ # Retained so existing v3 clients reading allow_template_sharing keep
28
+ # deserializing; it carries no information.
29
+ sig { returns(T.nilable(T::Boolean)) }
30
+ attr_accessor :allow_template_sharing
31
+
32
+ # Billing contact info returned in profile responses
33
+ sig { returns(T.nilable(Sentdm::ProfileDetail::BillingContact)) }
34
+ attr_reader :billing_contact
35
+
36
+ sig do
37
+ params(
38
+ billing_contact:
39
+ T.nilable(Sentdm::ProfileDetail::BillingContact::OrHash)
40
+ ).void
41
+ end
42
+ attr_writer :billing_contact
43
+
44
+ # Billing model: profile, organization, or profile_and_organization
45
+ sig { returns(T.nilable(String)) }
46
+ attr_reader :billing_model
47
+
48
+ sig { params(billing_model: String).void }
49
+ attr_writer :billing_model
50
+
51
+ # Brand response with nested contact, business, and compliance sections — mirrors
52
+ # the request structure.
53
+ sig { returns(T.nilable(Sentdm::ProfileDetail::Brand)) }
54
+ attr_reader :brand
55
+
56
+ sig do
57
+ params(brand: T.nilable(Sentdm::ProfileDetail::Brand::OrHash)).void
58
+ end
59
+ attr_writer :brand
60
+
61
+ # When the profile was created
62
+ sig { returns(T.nilable(Time)) }
63
+ attr_reader :created_at
64
+
65
+ sig { params(created_at: Time).void }
66
+ attr_writer :created_at
67
+
68
+ # Profile description
69
+ sig { returns(T.nilable(String)) }
70
+ attr_accessor :description
71
+
72
+ # Profile email (inherited from organization)
73
+ sig { returns(T.nilable(String)) }
74
+ attr_accessor :email
75
+
76
+ # Profile icon URL
77
+ sig { returns(T.nilable(String)) }
78
+ attr_accessor :icon
79
+
80
+ # Always false. A profile no longer inherits its organization's contacts. Retained
81
+ # so existing v3 clients reading inherit_contacts keep deserializing; it carries
82
+ # no information.
83
+ sig { returns(T.nilable(T::Boolean)) }
84
+ attr_accessor :inherit_contacts
85
+
86
+ # Whether this profile inherits TCR brand from the organization
87
+ sig { returns(T.nilable(T::Boolean)) }
88
+ attr_reader :inherit_tcr_brand
89
+
90
+ sig { params(inherit_tcr_brand: T::Boolean).void }
91
+ attr_writer :inherit_tcr_brand
92
+
93
+ # Whether this profile inherits TCR campaign from the organization
94
+ sig { returns(T.nilable(T::Boolean)) }
95
+ attr_reader :inherit_tcr_campaign
96
+
97
+ sig { params(inherit_tcr_campaign: T::Boolean).void }
98
+ attr_writer :inherit_tcr_campaign
99
+
100
+ # Always false. A profile no longer inherits its organization's templates.
101
+ # Retained so existing v3 clients reading inherit_templates keep deserializing; it
102
+ # carries no information.
103
+ sig { returns(T.nilable(T::Boolean)) }
104
+ attr_accessor :inherit_templates
105
+
106
+ # Profile name
107
+ sig { returns(T.nilable(String)) }
108
+ attr_reader :name
109
+
110
+ sig { params(name: String).void }
111
+ attr_writer :name
112
+
113
+ # Parent organization ID
114
+ sig { returns(T.nilable(String)) }
115
+ attr_accessor :organization_id
116
+
117
+ # Direct SMS phone number
118
+ sig { returns(T.nilable(String)) }
119
+ attr_accessor :sending_phone_number
120
+
121
+ # Deprecated. Always null. Sender borrowing is gone: a profile no longer points at
122
+ # another profile for its SMS sender, and every profile owns the sender it sends
123
+ # from.
124
+ #
125
+ # Kept on the wire, and never populated, because those are two different promises.
126
+ # Removing the key changes the response's shape — a generated client loses the
127
+ # property and stops compiling on the next regenerate, for a value that is now
128
+ # null for every profile in existence. Keeping it null costs a key and breaks
129
+ # nobody, and null is the honest answer rather than a placeholder: there is no
130
+ # borrowing left to report.
131
+ #
132
+ # Nothing could populate it. Migration 260813161500 dropped the column and copied
133
+ # each borrower its own channel-provider row; its Down() says outright that the
134
+ # borrower-to-lender pairing is not recoverable. The only surviving trace is a
135
+ # notes string on the copied row.
136
+ sig { returns(T.nilable(String)) }
137
+ attr_accessor :sending_phone_number_profile_id
138
+
139
+ sig { returns(T.nilable(String)) }
140
+ attr_accessor :sending_whatsapp_number_profile_id
141
+
142
+ # Profile short name/abbreviation. 3–11 characters: letters, numbers, and spaces
143
+ # only, with at least one letter.
144
+ sig { returns(T.nilable(String)) }
145
+ attr_accessor :short_name
146
+
147
+ # Profile setup status: incomplete, pending_review, approved, rejected
148
+ sig { returns(T.nilable(String)) }
149
+ attr_reader :status
150
+
151
+ sig { params(status: String).void }
152
+ attr_writer :status
153
+
154
+ # When the profile was last updated
155
+ sig { returns(T.nilable(Time)) }
156
+ attr_accessor :updated_at
157
+
158
+ # WhatsApp Business Account ID associated with this profile. Present whether the
159
+ # WABA is inherited from the organization or configured directly.
160
+ sig { returns(T.nilable(String)) }
161
+ attr_accessor :waba_id
162
+
163
+ # Direct WhatsApp phone number
164
+ sig { returns(T.nilable(String)) }
165
+ attr_accessor :whatsapp_phone_number
166
+
167
+ # Detailed profile response for v3 API
168
+ sig do
169
+ params(
170
+ id: String,
171
+ allow_contact_sharing: T.nilable(T::Boolean),
172
+ allow_number_change_during_onboarding: T.nilable(T::Boolean),
173
+ allow_template_sharing: T.nilable(T::Boolean),
174
+ billing_contact:
175
+ T.nilable(Sentdm::ProfileDetail::BillingContact::OrHash),
176
+ billing_model: String,
177
+ brand: T.nilable(Sentdm::ProfileDetail::Brand::OrHash),
178
+ created_at: Time,
179
+ description: T.nilable(String),
180
+ email: T.nilable(String),
181
+ icon: T.nilable(String),
182
+ inherit_contacts: T.nilable(T::Boolean),
183
+ inherit_tcr_brand: T::Boolean,
184
+ inherit_tcr_campaign: T::Boolean,
185
+ inherit_templates: T.nilable(T::Boolean),
186
+ name: String,
187
+ organization_id: T.nilable(String),
188
+ sending_phone_number: T.nilable(String),
189
+ sending_phone_number_profile_id: T.nilable(String),
190
+ sending_whatsapp_number_profile_id: T.nilable(String),
191
+ short_name: T.nilable(String),
192
+ status: String,
193
+ updated_at: T.nilable(Time),
194
+ waba_id: T.nilable(String),
195
+ whatsapp_phone_number: T.nilable(String)
196
+ ).returns(T.attached_class)
197
+ end
198
+ def self.new(
199
+ # Profile unique identifier
200
+ id: nil,
201
+ # Always false. A profile no longer shares contacts with sibling profiles — it
202
+ # sees only what it owns. Retained so existing v3 clients reading
203
+ # allow_contact_sharing keep deserializing; it carries no information.
204
+ allow_contact_sharing: nil,
205
+ # Whether number changes are allowed during onboarding
206
+ allow_number_change_during_onboarding: nil,
207
+ # Always false. A profile no longer shares templates with sibling profiles.
208
+ # Retained so existing v3 clients reading allow_template_sharing keep
209
+ # deserializing; it carries no information.
210
+ allow_template_sharing: nil,
211
+ # Billing contact info returned in profile responses
212
+ billing_contact: nil,
213
+ # Billing model: profile, organization, or profile_and_organization
214
+ billing_model: nil,
215
+ # Brand response with nested contact, business, and compliance sections — mirrors
216
+ # the request structure.
217
+ brand: nil,
218
+ # When the profile was created
219
+ created_at: nil,
220
+ # Profile description
221
+ description: nil,
222
+ # Profile email (inherited from organization)
223
+ email: nil,
224
+ # Profile icon URL
225
+ icon: nil,
226
+ # Always false. A profile no longer inherits its organization's contacts. Retained
227
+ # so existing v3 clients reading inherit_contacts keep deserializing; it carries
228
+ # no information.
229
+ inherit_contacts: nil,
230
+ # Whether this profile inherits TCR brand from the organization
231
+ inherit_tcr_brand: nil,
232
+ # Whether this profile inherits TCR campaign from the organization
233
+ inherit_tcr_campaign: nil,
234
+ # Always false. A profile no longer inherits its organization's templates.
235
+ # Retained so existing v3 clients reading inherit_templates keep deserializing; it
236
+ # carries no information.
237
+ inherit_templates: nil,
238
+ # Profile name
239
+ name: nil,
240
+ # Parent organization ID
241
+ organization_id: nil,
242
+ # Direct SMS phone number
243
+ sending_phone_number: nil,
244
+ # Deprecated. Always null. Sender borrowing is gone: a profile no longer points at
245
+ # another profile for its SMS sender, and every profile owns the sender it sends
246
+ # from.
247
+ #
248
+ # Kept on the wire, and never populated, because those are two different promises.
249
+ # Removing the key changes the response's shape — a generated client loses the
250
+ # property and stops compiling on the next regenerate, for a value that is now
251
+ # null for every profile in existence. Keeping it null costs a key and breaks
252
+ # nobody, and null is the honest answer rather than a placeholder: there is no
253
+ # borrowing left to report.
254
+ #
255
+ # Nothing could populate it. Migration 260813161500 dropped the column and copied
256
+ # each borrower its own channel-provider row; its Down() says outright that the
257
+ # borrower-to-lender pairing is not recoverable. The only surviving trace is a
258
+ # notes string on the copied row.
259
+ sending_phone_number_profile_id: nil,
260
+ sending_whatsapp_number_profile_id: nil,
261
+ # Profile short name/abbreviation. 3–11 characters: letters, numbers, and spaces
262
+ # only, with at least one letter.
263
+ short_name: nil,
264
+ # Profile setup status: incomplete, pending_review, approved, rejected
265
+ status: nil,
266
+ # When the profile was last updated
267
+ updated_at: nil,
268
+ # WhatsApp Business Account ID associated with this profile. Present whether the
269
+ # WABA is inherited from the organization or configured directly.
270
+ waba_id: nil,
271
+ # Direct WhatsApp phone number
272
+ whatsapp_phone_number: nil
273
+ )
274
+ end
275
+
276
+ sig do
277
+ override.returns(
278
+ {
279
+ id: String,
280
+ allow_contact_sharing: T.nilable(T::Boolean),
281
+ allow_number_change_during_onboarding: T.nilable(T::Boolean),
282
+ allow_template_sharing: T.nilable(T::Boolean),
283
+ billing_contact: T.nilable(Sentdm::ProfileDetail::BillingContact),
284
+ billing_model: String,
285
+ brand: T.nilable(Sentdm::ProfileDetail::Brand),
286
+ created_at: Time,
287
+ description: T.nilable(String),
288
+ email: T.nilable(String),
289
+ icon: T.nilable(String),
290
+ inherit_contacts: T.nilable(T::Boolean),
291
+ inherit_tcr_brand: T::Boolean,
292
+ inherit_tcr_campaign: T::Boolean,
293
+ inherit_templates: T.nilable(T::Boolean),
294
+ name: String,
295
+ organization_id: T.nilable(String),
296
+ sending_phone_number: T.nilable(String),
297
+ sending_phone_number_profile_id: T.nilable(String),
298
+ sending_whatsapp_number_profile_id: T.nilable(String),
299
+ short_name: T.nilable(String),
300
+ status: String,
301
+ updated_at: T.nilable(Time),
302
+ waba_id: T.nilable(String),
303
+ whatsapp_phone_number: T.nilable(String)
304
+ }
305
+ )
306
+ end
307
+ def to_hash
308
+ end
309
+
310
+ class BillingContact < Sentdm::Internal::Type::BaseModel
311
+ OrHash =
312
+ T.type_alias do
313
+ T.any(
314
+ Sentdm::ProfileDetail::BillingContact,
315
+ Sentdm::Internal::AnyHash
316
+ )
317
+ end
318
+
319
+ sig { returns(T.nilable(String)) }
320
+ attr_accessor :address
321
+
322
+ sig { returns(T.nilable(String)) }
323
+ attr_accessor :email
324
+
325
+ sig { returns(T.nilable(String)) }
326
+ attr_accessor :name
327
+
328
+ sig { returns(T.nilable(String)) }
329
+ attr_accessor :phone
330
+
331
+ # Billing contact info returned in profile responses
332
+ sig do
333
+ params(
334
+ address: T.nilable(String),
335
+ email: T.nilable(String),
336
+ name: T.nilable(String),
337
+ phone: T.nilable(String)
338
+ ).returns(T.attached_class)
339
+ end
340
+ def self.new(address: nil, email: nil, name: nil, phone: nil)
341
+ end
342
+
343
+ sig do
344
+ override.returns(
345
+ {
346
+ address: T.nilable(String),
347
+ email: T.nilable(String),
348
+ name: T.nilable(String),
349
+ phone: T.nilable(String)
350
+ }
351
+ )
352
+ end
353
+ def to_hash
354
+ end
355
+ end
356
+
357
+ class Brand < Sentdm::Internal::Type::BaseModel
358
+ OrHash =
359
+ T.type_alias do
360
+ T.any(Sentdm::ProfileDetail::Brand, Sentdm::Internal::AnyHash)
361
+ end
362
+
363
+ # Unique identifier for the brand
364
+ sig { returns(T.nilable(String)) }
365
+ attr_reader :id
366
+
367
+ sig { params(id: String).void }
368
+ attr_writer :id
369
+
370
+ # Business details and address information
371
+ sig { returns(T.nilable(Sentdm::ProfileDetail::Brand::Business)) }
372
+ attr_reader :business
373
+
374
+ sig do
375
+ params(
376
+ business: T.nilable(Sentdm::ProfileDetail::Brand::Business::OrHash)
377
+ ).void
378
+ end
379
+ attr_writer :business
380
+
381
+ # Compliance and TCR-related information
382
+ sig { returns(T.nilable(Sentdm::ProfileDetail::Brand::Compliance)) }
383
+ attr_reader :compliance
384
+
385
+ sig do
386
+ params(
387
+ compliance:
388
+ T.nilable(Sentdm::ProfileDetail::Brand::Compliance::OrHash)
389
+ ).void
390
+ end
391
+ attr_writer :compliance
392
+
393
+ # Contact information for the brand
394
+ sig { returns(T.nilable(Sentdm::ProfileDetail::Brand::Contact)) }
395
+ attr_reader :contact
396
+
397
+ sig do
398
+ params(
399
+ contact: T.nilable(Sentdm::ProfileDetail::Brand::Contact::OrHash)
400
+ ).void
401
+ end
402
+ attr_writer :contact
403
+
404
+ # When the brand was created
405
+ sig { returns(T.nilable(Time)) }
406
+ attr_reader :created_at
407
+
408
+ sig { params(created_at: Time).void }
409
+ attr_writer :created_at
410
+
411
+ # Deprecated and scheduled for removal. Identifies the Campaign Service Provider
412
+ # that registered the brand, which is Sent, so the value is the same for every
413
+ # brand and every account. Nothing on your side can act on it and there is no
414
+ # replacement. Stop reading it.
415
+ sig { returns(T.nilable(String)) }
416
+ attr_accessor :csp_id
417
+
418
+ sig do
419
+ returns(
420
+ T.nilable(
421
+ Sentdm::ProfileDetail::Brand::IdentityStatus::TaggedSymbol
422
+ )
423
+ )
424
+ end
425
+ attr_accessor :identity_status
426
+
427
+ # Whether this brand is inherited from the parent organization
428
+ sig { returns(T.nilable(T::Boolean)) }
429
+ attr_reader :is_inherited
430
+
431
+ sig { params(is_inherited: T::Boolean).void }
432
+ attr_writer :is_inherited
433
+
434
+ sig do
435
+ returns(T.nilable(Sentdm::ProfileDetail::Brand::Status::TaggedSymbol))
436
+ end
437
+ attr_accessor :status
438
+
439
+ # When the brand was submitted to TCR
440
+ sig { returns(T.nilable(Time)) }
441
+ attr_accessor :submitted_at
442
+
443
+ # Whether this brand has been submitted to TCR
444
+ sig { returns(T.nilable(T::Boolean)) }
445
+ attr_reader :submitted_to_tcr
446
+
447
+ sig { params(submitted_to_tcr: T::Boolean).void }
448
+ attr_writer :submitted_to_tcr
449
+
450
+ # TCR brand ID (populated after TCR submission)
451
+ sig { returns(T.nilable(String)) }
452
+ attr_accessor :tcr_brand_id
453
+
454
+ # Universal EIN from TCR
455
+ sig { returns(T.nilable(String)) }
456
+ attr_accessor :universal_ein
457
+
458
+ # When the brand was last updated
459
+ sig { returns(T.nilable(Time)) }
460
+ attr_accessor :updated_at
461
+
462
+ # Brand response with nested contact, business, and compliance sections — mirrors
463
+ # the request structure.
464
+ sig do
465
+ params(
466
+ id: String,
467
+ business: T.nilable(Sentdm::ProfileDetail::Brand::Business::OrHash),
468
+ compliance:
469
+ T.nilable(Sentdm::ProfileDetail::Brand::Compliance::OrHash),
470
+ contact: T.nilable(Sentdm::ProfileDetail::Brand::Contact::OrHash),
471
+ created_at: Time,
472
+ csp_id: T.nilable(String),
473
+ identity_status:
474
+ T.nilable(Sentdm::ProfileDetail::Brand::IdentityStatus::OrSymbol),
475
+ is_inherited: T::Boolean,
476
+ status: T.nilable(Sentdm::ProfileDetail::Brand::Status::OrSymbol),
477
+ submitted_at: T.nilable(Time),
478
+ submitted_to_tcr: T::Boolean,
479
+ tcr_brand_id: T.nilable(String),
480
+ universal_ein: T.nilable(String),
481
+ updated_at: T.nilable(Time)
482
+ ).returns(T.attached_class)
483
+ end
484
+ def self.new(
485
+ # Unique identifier for the brand
486
+ id: nil,
487
+ # Business details and address information
488
+ business: nil,
489
+ # Compliance and TCR-related information
490
+ compliance: nil,
491
+ # Contact information for the brand
492
+ contact: nil,
493
+ # When the brand was created
494
+ created_at: nil,
495
+ # Deprecated and scheduled for removal. Identifies the Campaign Service Provider
496
+ # that registered the brand, which is Sent, so the value is the same for every
497
+ # brand and every account. Nothing on your side can act on it and there is no
498
+ # replacement. Stop reading it.
499
+ csp_id: nil,
500
+ identity_status: nil,
501
+ # Whether this brand is inherited from the parent organization
502
+ is_inherited: nil,
503
+ status: nil,
504
+ # When the brand was submitted to TCR
505
+ submitted_at: nil,
506
+ # Whether this brand has been submitted to TCR
507
+ submitted_to_tcr: nil,
508
+ # TCR brand ID (populated after TCR submission)
509
+ tcr_brand_id: nil,
510
+ # Universal EIN from TCR
511
+ universal_ein: nil,
512
+ # When the brand was last updated
513
+ updated_at: nil
514
+ )
515
+ end
516
+
517
+ sig do
518
+ override.returns(
519
+ {
520
+ id: String,
521
+ business: T.nilable(Sentdm::ProfileDetail::Brand::Business),
522
+ compliance: T.nilable(Sentdm::ProfileDetail::Brand::Compliance),
523
+ contact: T.nilable(Sentdm::ProfileDetail::Brand::Contact),
524
+ created_at: Time,
525
+ csp_id: T.nilable(String),
526
+ identity_status:
527
+ T.nilable(
528
+ Sentdm::ProfileDetail::Brand::IdentityStatus::TaggedSymbol
529
+ ),
530
+ is_inherited: T::Boolean,
531
+ status:
532
+ T.nilable(Sentdm::ProfileDetail::Brand::Status::TaggedSymbol),
533
+ submitted_at: T.nilable(Time),
534
+ submitted_to_tcr: T::Boolean,
535
+ tcr_brand_id: T.nilable(String),
536
+ universal_ein: T.nilable(String),
537
+ updated_at: T.nilable(Time)
538
+ }
539
+ )
540
+ end
541
+ def to_hash
542
+ end
543
+
544
+ class Business < Sentdm::Internal::Type::BaseModel
545
+ OrHash =
546
+ T.type_alias do
547
+ T.any(
548
+ Sentdm::ProfileDetail::Brand::Business,
549
+ Sentdm::Internal::AnyHash
550
+ )
551
+ end
552
+
553
+ # City
554
+ sig { returns(T.nilable(String)) }
555
+ attr_accessor :city
556
+
557
+ # Country code (e.g., US, CA)
558
+ sig { returns(T.nilable(String)) }
559
+ attr_accessor :country
560
+
561
+ # Country where the business is registered
562
+ sig { returns(T.nilable(String)) }
563
+ attr_accessor :country_of_registration
564
+
565
+ # Business entity type
566
+ sig { returns(T.nilable(String)) }
567
+ attr_accessor :entity_type
568
+
569
+ # Legal business name
570
+ sig { returns(T.nilable(String)) }
571
+ attr_accessor :legal_name
572
+
573
+ # Postal/ZIP code
574
+ sig { returns(T.nilable(String)) }
575
+ attr_accessor :postal_code
576
+
577
+ # State/province code
578
+ sig { returns(T.nilable(String)) }
579
+ attr_accessor :state
580
+
581
+ # Street address
582
+ sig { returns(T.nilable(String)) }
583
+ attr_accessor :street
584
+
585
+ # Tax ID/EIN number
586
+ sig { returns(T.nilable(String)) }
587
+ attr_accessor :tax_id
588
+
589
+ # Type of tax ID (e.g., us_ein, ca_bn)
590
+ sig { returns(T.nilable(String)) }
591
+ attr_accessor :tax_id_type
592
+
593
+ # Business website URL
594
+ sig { returns(T.nilable(String)) }
595
+ attr_accessor :url
596
+
597
+ # Business details and address information
598
+ sig do
599
+ params(
600
+ city: T.nilable(String),
601
+ country: T.nilable(String),
602
+ country_of_registration: T.nilable(String),
603
+ entity_type: T.nilable(String),
604
+ legal_name: T.nilable(String),
605
+ postal_code: T.nilable(String),
606
+ state: T.nilable(String),
607
+ street: T.nilable(String),
608
+ tax_id: T.nilable(String),
609
+ tax_id_type: T.nilable(String),
610
+ url: T.nilable(String)
611
+ ).returns(T.attached_class)
612
+ end
613
+ def self.new(
614
+ # City
615
+ city: nil,
616
+ # Country code (e.g., US, CA)
617
+ country: nil,
618
+ # Country where the business is registered
619
+ country_of_registration: nil,
620
+ # Business entity type
621
+ entity_type: nil,
622
+ # Legal business name
623
+ legal_name: nil,
624
+ # Postal/ZIP code
625
+ postal_code: nil,
626
+ # State/province code
627
+ state: nil,
628
+ # Street address
629
+ street: nil,
630
+ # Tax ID/EIN number
631
+ tax_id: nil,
632
+ # Type of tax ID (e.g., us_ein, ca_bn)
633
+ tax_id_type: nil,
634
+ # Business website URL
635
+ url: nil
636
+ )
637
+ end
638
+
639
+ sig do
640
+ override.returns(
641
+ {
642
+ city: T.nilable(String),
643
+ country: T.nilable(String),
644
+ country_of_registration: T.nilable(String),
645
+ entity_type: T.nilable(String),
646
+ legal_name: T.nilable(String),
647
+ postal_code: T.nilable(String),
648
+ state: T.nilable(String),
649
+ street: T.nilable(String),
650
+ tax_id: T.nilable(String),
651
+ tax_id_type: T.nilable(String),
652
+ url: T.nilable(String)
653
+ }
654
+ )
655
+ end
656
+ def to_hash
657
+ end
658
+ end
659
+
660
+ class Compliance < Sentdm::Internal::Type::BaseModel
661
+ OrHash =
662
+ T.type_alias do
663
+ T.any(
664
+ Sentdm::ProfileDetail::Brand::Compliance,
665
+ Sentdm::Internal::AnyHash
666
+ )
667
+ end
668
+
669
+ sig { returns(T.nilable(Sentdm::TcrBrandRelationship::TaggedSymbol)) }
670
+ attr_accessor :brand_relationship
671
+
672
+ # List of destination countries for messaging
673
+ sig { returns(T.nilable(T::Array[Sentdm::DestinationCountry])) }
674
+ attr_reader :destination_countries
675
+
676
+ sig do
677
+ params(
678
+ destination_countries:
679
+ T::Array[Sentdm::DestinationCountry::OrHash]
680
+ ).void
681
+ end
682
+ attr_writer :destination_countries
683
+
684
+ # Whether this is a TCR (Campaign Registry) application
685
+ sig { returns(T.nilable(T::Boolean)) }
686
+ attr_reader :is_tcr_application
687
+
688
+ sig { params(is_tcr_application: T::Boolean).void }
689
+ attr_writer :is_tcr_application
690
+
691
+ # Additional notes about the business or use case
692
+ sig { returns(T.nilable(String)) }
693
+ attr_accessor :notes
694
+
695
+ # Phone number prefix for messaging (e.g., "+1")
696
+ sig { returns(T.nilable(String)) }
697
+ attr_accessor :phone_number_prefix
698
+
699
+ # Always null. The brand's free-text primary use case is no longer stored: it
700
+ # reached neither TCR nor any decision, and its column is dropped with no
701
+ # backfill, because the values were prose and the typed equivalent is the
702
+ # campaign's MessagingUseCaseUS.
703
+ #
704
+ # Retained so existing v3 clients reading primary_use_case keep deserializing.
705
+ # Unlike the profile sharing flags, which can answer false truthfully, there is no
706
+ # value to report here — the field is present and empty rather than present and
707
+ # wrong.
708
+ sig { returns(T.nilable(String)) }
709
+ attr_accessor :primary_use_case
710
+
711
+ sig { returns(T.nilable(Sentdm::TcrVertical::TaggedSymbol)) }
712
+ attr_accessor :vertical
713
+
714
+ # Compliance and TCR-related information
715
+ sig do
716
+ params(
717
+ brand_relationship:
718
+ T.nilable(Sentdm::TcrBrandRelationship::OrSymbol),
719
+ destination_countries:
720
+ T::Array[Sentdm::DestinationCountry::OrHash],
721
+ is_tcr_application: T::Boolean,
722
+ notes: T.nilable(String),
723
+ phone_number_prefix: T.nilable(String),
724
+ primary_use_case: T.nilable(String),
725
+ vertical: T.nilable(Sentdm::TcrVertical::OrSymbol)
726
+ ).returns(T.attached_class)
727
+ end
728
+ def self.new(
729
+ brand_relationship: nil,
730
+ # List of destination countries for messaging
731
+ destination_countries: nil,
732
+ # Whether this is a TCR (Campaign Registry) application
733
+ is_tcr_application: nil,
734
+ # Additional notes about the business or use case
735
+ notes: nil,
736
+ # Phone number prefix for messaging (e.g., "+1")
737
+ phone_number_prefix: nil,
738
+ # Always null. The brand's free-text primary use case is no longer stored: it
739
+ # reached neither TCR nor any decision, and its column is dropped with no
740
+ # backfill, because the values were prose and the typed equivalent is the
741
+ # campaign's MessagingUseCaseUS.
742
+ #
743
+ # Retained so existing v3 clients reading primary_use_case keep deserializing.
744
+ # Unlike the profile sharing flags, which can answer false truthfully, there is no
745
+ # value to report here — the field is present and empty rather than present and
746
+ # wrong.
747
+ primary_use_case: nil,
748
+ vertical: nil
749
+ )
750
+ end
751
+
752
+ sig do
753
+ override.returns(
754
+ {
755
+ brand_relationship:
756
+ T.nilable(Sentdm::TcrBrandRelationship::TaggedSymbol),
757
+ destination_countries: T::Array[Sentdm::DestinationCountry],
758
+ is_tcr_application: T::Boolean,
759
+ notes: T.nilable(String),
760
+ phone_number_prefix: T.nilable(String),
761
+ primary_use_case: T.nilable(String),
762
+ vertical: T.nilable(Sentdm::TcrVertical::TaggedSymbol)
763
+ }
764
+ )
765
+ end
766
+ def to_hash
767
+ end
768
+ end
769
+
770
+ class Contact < Sentdm::Internal::Type::BaseModel
771
+ OrHash =
772
+ T.type_alias do
773
+ T.any(
774
+ Sentdm::ProfileDetail::Brand::Contact,
775
+ Sentdm::Internal::AnyHash
776
+ )
777
+ end
778
+
779
+ # Business/brand name
780
+ sig { returns(T.nilable(String)) }
781
+ attr_accessor :business_name
782
+
783
+ # Contact email address
784
+ sig { returns(T.nilable(String)) }
785
+ attr_accessor :email
786
+
787
+ # Primary contact name
788
+ sig { returns(T.nilable(String)) }
789
+ attr_reader :name
790
+
791
+ sig { params(name: String).void }
792
+ attr_writer :name
793
+
794
+ # Contact phone number in E.164 format
795
+ sig { returns(T.nilable(String)) }
796
+ attr_accessor :phone
797
+
798
+ # Contact phone country code (e.g., "1" for US)
799
+ sig { returns(T.nilable(String)) }
800
+ attr_accessor :phone_country_code
801
+
802
+ # Contact's role in the business
803
+ sig { returns(T.nilable(String)) }
804
+ attr_accessor :role
805
+
806
+ # Contact information for the brand
807
+ sig do
808
+ params(
809
+ business_name: T.nilable(String),
810
+ email: T.nilable(String),
811
+ name: String,
812
+ phone: T.nilable(String),
813
+ phone_country_code: T.nilable(String),
814
+ role: T.nilable(String)
815
+ ).returns(T.attached_class)
816
+ end
817
+ def self.new(
818
+ # Business/brand name
819
+ business_name: nil,
820
+ # Contact email address
821
+ email: nil,
822
+ # Primary contact name
823
+ name: nil,
824
+ # Contact phone number in E.164 format
825
+ phone: nil,
826
+ # Contact phone country code (e.g., "1" for US)
827
+ phone_country_code: nil,
828
+ # Contact's role in the business
829
+ role: nil
830
+ )
831
+ end
832
+
833
+ sig do
834
+ override.returns(
835
+ {
836
+ business_name: T.nilable(String),
837
+ email: T.nilable(String),
838
+ name: String,
839
+ phone: T.nilable(String),
840
+ phone_country_code: T.nilable(String),
841
+ role: T.nilable(String)
842
+ }
843
+ )
844
+ end
845
+ def to_hash
846
+ end
847
+ end
848
+
849
+ module IdentityStatus
850
+ extend Sentdm::Internal::Type::Enum
851
+
852
+ TaggedSymbol =
853
+ T.type_alias do
854
+ T.all(Symbol, Sentdm::ProfileDetail::Brand::IdentityStatus)
855
+ end
856
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
857
+
858
+ SELF_DECLARED =
859
+ T.let(
860
+ :SELF_DECLARED,
861
+ Sentdm::ProfileDetail::Brand::IdentityStatus::TaggedSymbol
862
+ )
863
+ UNVERIFIED =
864
+ T.let(
865
+ :UNVERIFIED,
866
+ Sentdm::ProfileDetail::Brand::IdentityStatus::TaggedSymbol
867
+ )
868
+ VERIFIED =
869
+ T.let(
870
+ :VERIFIED,
871
+ Sentdm::ProfileDetail::Brand::IdentityStatus::TaggedSymbol
872
+ )
873
+ VETTED_VERIFIED =
874
+ T.let(
875
+ :VETTED_VERIFIED,
876
+ Sentdm::ProfileDetail::Brand::IdentityStatus::TaggedSymbol
877
+ )
878
+
879
+ sig do
880
+ override.returns(
881
+ T::Array[
882
+ Sentdm::ProfileDetail::Brand::IdentityStatus::TaggedSymbol
883
+ ]
884
+ )
885
+ end
886
+ def self.values
887
+ end
888
+ end
889
+
890
+ module Status
891
+ extend Sentdm::Internal::Type::Enum
892
+
893
+ TaggedSymbol =
894
+ T.type_alias { T.all(Symbol, Sentdm::ProfileDetail::Brand::Status) }
895
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
896
+
897
+ ACTIVE =
898
+ T.let(:ACTIVE, Sentdm::ProfileDetail::Brand::Status::TaggedSymbol)
899
+ INACTIVE =
900
+ T.let(:INACTIVE, Sentdm::ProfileDetail::Brand::Status::TaggedSymbol)
901
+ SUSPENDED =
902
+ T.let(
903
+ :SUSPENDED,
904
+ Sentdm::ProfileDetail::Brand::Status::TaggedSymbol
905
+ )
906
+
907
+ sig do
908
+ override.returns(
909
+ T::Array[Sentdm::ProfileDetail::Brand::Status::TaggedSymbol]
910
+ )
911
+ end
912
+ def self.values
913
+ end
914
+ end
915
+ end
916
+ end
917
+ end
918
+ end