sentdm 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +40 -0
  3. data/README.md +1 -27
  4. data/lib/sentdm/client.rb +71 -8
  5. data/lib/sentdm/internal/type/base_model.rb +5 -5
  6. data/lib/sentdm/models/contact_create_response.rb +249 -0
  7. data/lib/sentdm/models/contact_delete_params.rb +16 -2
  8. data/lib/sentdm/models/contact_list_response.rb +299 -16
  9. data/lib/sentdm/models/contact_retrieve_message_summary_response.rb +186 -0
  10. data/lib/sentdm/models/contact_retrieve_response.rb +249 -0
  11. data/lib/sentdm/models/contact_update_response.rb +249 -0
  12. data/lib/sentdm/models/conversation_list_messages_response.rb +436 -0
  13. data/lib/sentdm/models/conversation_list_response.rb +433 -0
  14. data/lib/sentdm/models/inbound_message_event.rb +52 -0
  15. data/lib/sentdm/models/inbound_message_event_payload.rb +81 -0
  16. data/lib/sentdm/models/me_retrieve_response.rb +242 -12
  17. data/lib/sentdm/models/message_event.rb +53 -0
  18. data/lib/sentdm/models/message_event_payload.rb +92 -0
  19. data/lib/sentdm/models/message_retrieve_activities_response.rb +165 -7
  20. data/lib/sentdm/models/message_retrieve_status_response.rb +74 -6
  21. data/lib/sentdm/models/message_send_response.rb +113 -28
  22. data/lib/sentdm/models/number_lookup_response.rb +74 -6
  23. data/lib/sentdm/models/profile_complete_response.rb +74 -6
  24. data/lib/sentdm/models/profile_create_params.rb +378 -26
  25. data/lib/sentdm/models/profile_create_response.rb +760 -0
  26. data/lib/sentdm/models/profile_delete_params.rb +16 -2
  27. data/lib/sentdm/models/profile_list_response.rb +825 -14
  28. data/lib/sentdm/models/profile_retrieve_response.rb +762 -0
  29. data/lib/sentdm/models/profile_update_params.rb +391 -24
  30. data/lib/sentdm/models/profile_update_response.rb +760 -0
  31. data/lib/sentdm/models/profiles/campaign_create_params.rb +156 -3
  32. data/lib/sentdm/models/profiles/campaign_create_response.rb +420 -0
  33. data/lib/sentdm/models/profiles/campaign_delete_params.rb +17 -2
  34. data/lib/sentdm/models/profiles/campaign_list_response.rb +421 -0
  35. data/lib/sentdm/models/profiles/campaign_update_params.rb +156 -3
  36. data/lib/sentdm/models/profiles/campaign_update_response.rb +420 -0
  37. data/lib/sentdm/models/template_create_response.rb +209 -0
  38. data/lib/sentdm/models/template_event.rb +52 -0
  39. data/lib/sentdm/models/template_event_payload.rb +88 -0
  40. data/lib/sentdm/models/template_list_params.rb +9 -2
  41. data/lib/sentdm/models/template_list_response.rb +262 -16
  42. data/lib/sentdm/models/template_retrieve_response.rb +209 -0
  43. data/lib/sentdm/models/template_update_response.rb +209 -0
  44. data/lib/sentdm/models/user_invite_response.rb +201 -0
  45. data/lib/sentdm/models/user_list_response.rb +259 -14
  46. data/lib/sentdm/models/user_remove_params.rb +16 -2
  47. data/lib/sentdm/models/user_retrieve_response.rb +201 -0
  48. data/lib/sentdm/models/user_update_role_response.rb +201 -0
  49. data/lib/sentdm/models/webhook_create_response.rb +229 -0
  50. data/lib/sentdm/models/webhook_list_event_types_response.rb +213 -13
  51. data/lib/sentdm/models/webhook_list_events_response.rb +207 -16
  52. data/lib/sentdm/models/webhook_list_response.rb +280 -15
  53. data/lib/sentdm/models/webhook_retrieve_response.rb +229 -0
  54. data/lib/sentdm/models/webhook_rotate_secret_params.rb +17 -2
  55. data/lib/sentdm/models/webhook_rotate_secret_response.rb +74 -6
  56. data/lib/sentdm/models/webhook_test_response.rb +74 -6
  57. data/lib/sentdm/models/webhook_toggle_status_response.rb +229 -0
  58. data/lib/sentdm/models/webhook_update_response.rb +229 -0
  59. data/lib/sentdm/models.rb +11 -51
  60. data/lib/sentdm/resources/contacts.rb +30 -13
  61. data/lib/sentdm/resources/conversations.rb +12 -4
  62. data/lib/sentdm/resources/me.rb +6 -1
  63. data/lib/sentdm/resources/messages.rb +17 -5
  64. data/lib/sentdm/resources/numbers.rb +6 -1
  65. data/lib/sentdm/resources/profiles/campaigns.rb +47 -9
  66. data/lib/sentdm/resources/profiles.rb +137 -61
  67. data/lib/sentdm/resources/templates.rb +14 -8
  68. data/lib/sentdm/resources/users.rb +15 -10
  69. data/lib/sentdm/resources/webhooks.rb +19 -9
  70. data/lib/sentdm/version.rb +1 -1
  71. data/lib/sentdm.rb +28 -32
  72. data/rbi/sentdm/client.rbi +71 -8
  73. data/rbi/sentdm/models/contact_create_response.rbi +407 -0
  74. data/rbi/sentdm/models/contact_delete_params.rbi +19 -2
  75. data/rbi/sentdm/models/contact_list_response.rbi +527 -21
  76. data/rbi/sentdm/models/contact_retrieve_message_summary_response.rbi +397 -0
  77. data/rbi/sentdm/models/contact_retrieve_response.rbi +409 -0
  78. data/rbi/sentdm/models/contact_update_response.rbi +407 -0
  79. data/rbi/sentdm/models/conversation_list_messages_response.rbi +843 -0
  80. data/rbi/sentdm/models/conversation_list_response.rbi +819 -0
  81. data/rbi/sentdm/models/inbound_message_event.rbi +88 -0
  82. data/rbi/sentdm/models/inbound_message_event_payload.rbi +122 -0
  83. data/rbi/sentdm/models/me_retrieve_response.rbi +367 -16
  84. data/rbi/sentdm/models/message_event.rbi +86 -0
  85. data/rbi/sentdm/models/message_event_payload.rbi +132 -0
  86. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +335 -11
  87. data/rbi/sentdm/models/message_retrieve_status_response.rbi +148 -8
  88. data/rbi/sentdm/models/message_send_response.rbi +178 -32
  89. data/rbi/sentdm/models/number_lookup_response.rbi +135 -8
  90. data/rbi/sentdm/models/profile_complete_response.rbi +137 -8
  91. data/rbi/sentdm/models/profile_create_params.rbi +592 -42
  92. data/rbi/sentdm/models/profile_create_response.rbi +1226 -0
  93. data/rbi/sentdm/models/profile_delete_params.rbi +19 -2
  94. data/rbi/sentdm/models/profile_list_response.rbi +1366 -18
  95. data/rbi/sentdm/models/profile_retrieve_response.rbi +1230 -0
  96. data/rbi/sentdm/models/profile_update_params.rbi +610 -30
  97. data/rbi/sentdm/models/profile_update_response.rbi +1226 -0
  98. data/rbi/sentdm/models/profiles/campaign_create_params.rbi +218 -4
  99. data/rbi/sentdm/models/profiles/campaign_create_response.rbi +674 -0
  100. data/rbi/sentdm/models/profiles/campaign_delete_params.rbi +14 -1
  101. data/rbi/sentdm/models/profiles/campaign_list_response.rbi +667 -0
  102. data/rbi/sentdm/models/profiles/campaign_update_params.rbi +218 -4
  103. data/rbi/sentdm/models/profiles/campaign_update_response.rbi +674 -0
  104. data/rbi/sentdm/models/template_create_response.rbi +349 -0
  105. data/rbi/sentdm/models/template_event.rbi +84 -0
  106. data/rbi/sentdm/models/template_event_payload.rbi +131 -0
  107. data/rbi/sentdm/models/template_list_params.rbi +10 -2
  108. data/rbi/sentdm/models/template_list_response.rbi +469 -21
  109. data/rbi/sentdm/models/template_retrieve_response.rbi +355 -0
  110. data/rbi/sentdm/models/template_update_response.rbi +349 -0
  111. data/rbi/sentdm/models/user_invite_response.rbi +336 -0
  112. data/rbi/sentdm/models/user_list_response.rbi +463 -18
  113. data/rbi/sentdm/models/user_remove_params.rbi +19 -2
  114. data/rbi/sentdm/models/user_retrieve_response.rbi +336 -0
  115. data/rbi/sentdm/models/user_update_role_response.rbi +341 -0
  116. data/rbi/sentdm/models/webhook_create_response.rbi +361 -0
  117. data/rbi/sentdm/models/webhook_list_event_types_response.rbi +433 -16
  118. data/rbi/sentdm/models/webhook_list_events_response.rbi +379 -19
  119. data/rbi/sentdm/models/webhook_list_response.rbi +480 -19
  120. data/rbi/sentdm/models/webhook_retrieve_response.rbi +363 -0
  121. data/rbi/sentdm/models/webhook_rotate_secret_params.rbi +14 -1
  122. data/rbi/sentdm/models/webhook_rotate_secret_response.rbi +148 -8
  123. data/rbi/sentdm/models/webhook_test_response.rbi +135 -8
  124. data/rbi/sentdm/models/webhook_toggle_status_response.rbi +379 -0
  125. data/rbi/sentdm/models/webhook_update_response.rbi +361 -0
  126. data/rbi/sentdm/models.rbi +11 -53
  127. data/rbi/sentdm/resources/contacts.rbi +24 -9
  128. data/rbi/sentdm/resources/conversations.rbi +10 -2
  129. data/rbi/sentdm/resources/me.rbi +6 -1
  130. data/rbi/sentdm/resources/messages.rbi +17 -5
  131. data/rbi/sentdm/resources/numbers.rbi +6 -1
  132. data/rbi/sentdm/resources/profiles/campaigns.rbi +36 -6
  133. data/rbi/sentdm/resources/profiles.rbi +177 -68
  134. data/rbi/sentdm/resources/templates.rbi +15 -5
  135. data/rbi/sentdm/resources/users.rbi +12 -6
  136. data/rbi/sentdm/resources/webhooks.rbi +15 -5
  137. data/sig/sentdm/models/contact_create_response.rbs +216 -0
  138. data/sig/sentdm/models/contact_delete_params.rbs +10 -6
  139. data/sig/sentdm/models/contact_list_response.rbs +263 -20
  140. data/sig/sentdm/models/contact_retrieve_message_summary_response.rbs +182 -0
  141. data/sig/sentdm/models/contact_retrieve_response.rbs +216 -0
  142. data/sig/sentdm/models/contact_update_response.rbs +216 -0
  143. data/sig/sentdm/models/conversation_list_messages_response.rbs +404 -0
  144. data/sig/sentdm/models/conversation_list_response.rbs +404 -0
  145. data/sig/sentdm/models/inbound_message_event.rbs +39 -0
  146. data/sig/sentdm/models/inbound_message_event_payload.rbs +69 -0
  147. data/sig/sentdm/models/me_retrieve_response.rbs +176 -18
  148. data/sig/sentdm/models/message_event.rbs +39 -0
  149. data/sig/sentdm/models/message_event_payload.rbs +72 -0
  150. data/sig/sentdm/models/message_retrieve_activities_response.rbs +147 -12
  151. data/sig/sentdm/models/message_retrieve_status_response.rbs +71 -9
  152. data/sig/sentdm/models/message_send_response.rbs +71 -9
  153. data/sig/sentdm/models/number_lookup_response.rbs +71 -9
  154. data/sig/sentdm/models/profile_complete_response.rbs +71 -9
  155. data/sig/sentdm/models/profile_create_params.rbs +271 -24
  156. data/sig/sentdm/models/profile_create_response.rbs +559 -0
  157. data/sig/sentdm/models/profile_delete_params.rbs +10 -6
  158. data/sig/sentdm/models/profile_list_response.rbs +615 -15
  159. data/sig/sentdm/models/profile_retrieve_response.rbs +559 -0
  160. data/sig/sentdm/models/profile_update_params.rbs +263 -12
  161. data/sig/sentdm/models/profile_update_response.rbs +559 -0
  162. data/sig/sentdm/models/profiles/campaign_create_params.rbs +108 -4
  163. data/sig/sentdm/models/profiles/campaign_create_response.rbs +357 -0
  164. data/sig/sentdm/models/profiles/campaign_delete_params.rbs +15 -8
  165. data/sig/sentdm/models/profiles/campaign_list_response.rbs +357 -0
  166. data/sig/sentdm/models/profiles/campaign_update_params.rbs +108 -4
  167. data/sig/sentdm/models/profiles/campaign_update_response.rbs +357 -0
  168. data/sig/sentdm/models/template_create_response.rbs +182 -0
  169. data/sig/sentdm/models/template_event.rbs +39 -0
  170. data/sig/sentdm/models/template_event_payload.rbs +76 -0
  171. data/sig/sentdm/models/template_list_response.rbs +230 -19
  172. data/sig/sentdm/models/template_retrieve_response.rbs +182 -0
  173. data/sig/sentdm/models/template_update_response.rbs +182 -0
  174. data/sig/sentdm/models/user_invite_response.rbs +177 -0
  175. data/sig/sentdm/models/user_list_response.rbs +233 -15
  176. data/sig/sentdm/models/user_remove_params.rbs +10 -6
  177. data/sig/sentdm/models/user_retrieve_response.rbs +177 -0
  178. data/sig/sentdm/models/user_update_role_response.rbs +177 -0
  179. data/sig/sentdm/models/webhook_create_response.rbs +208 -0
  180. data/sig/sentdm/models/webhook_list_event_types_response.rbs +203 -15
  181. data/sig/sentdm/models/webhook_list_events_response.rbs +160 -19
  182. data/sig/sentdm/models/webhook_list_response.rbs +255 -20
  183. data/sig/sentdm/models/webhook_retrieve_response.rbs +208 -0
  184. data/sig/sentdm/models/webhook_rotate_secret_params.rbs +17 -8
  185. data/sig/sentdm/models/webhook_rotate_secret_response.rbs +71 -9
  186. data/sig/sentdm/models/webhook_test_response.rbs +71 -9
  187. data/sig/sentdm/models/webhook_toggle_status_response.rbs +208 -0
  188. data/sig/sentdm/models/webhook_update_response.rbs +208 -0
  189. data/sig/sentdm/models.rbs +11 -51
  190. data/sig/sentdm/resources/contacts.rbs +4 -4
  191. data/sig/sentdm/resources/conversations.rbs +2 -2
  192. data/sig/sentdm/resources/profiles/campaigns.rbs +5 -5
  193. data/sig/sentdm/resources/profiles.rbs +11 -11
  194. data/sig/sentdm/resources/templates.rbs +3 -3
  195. data/sig/sentdm/resources/users.rbs +3 -3
  196. data/sig/sentdm/resources/webhooks.rbs +4 -4
  197. metadata +86 -98
  198. data/lib/sentdm/models/api_meta.rb +0 -34
  199. data/lib/sentdm/models/api_response_of_contact.rb +0 -46
  200. data/lib/sentdm/models/api_response_of_contact_message_summary.rb +0 -43
  201. data/lib/sentdm/models/api_response_of_conversation_messages_list.rb +0 -43
  202. data/lib/sentdm/models/api_response_of_profile_detail.rb +0 -43
  203. data/lib/sentdm/models/api_response_of_user.rb +0 -43
  204. data/lib/sentdm/models/api_response_template.rb +0 -43
  205. data/lib/sentdm/models/api_response_webhook.rb +0 -43
  206. data/lib/sentdm/models/billing_contact_info.rb +0 -47
  207. data/lib/sentdm/models/brand_business_info.rb +0 -114
  208. data/lib/sentdm/models/brand_compliance_info.rb +0 -67
  209. data/lib/sentdm/models/brand_contact_info.rb +0 -58
  210. data/lib/sentdm/models/brands_brand_data.rb +0 -34
  211. data/lib/sentdm/models/contact_message_summary.rb +0 -76
  212. data/lib/sentdm/models/contact_response.rb +0 -126
  213. data/lib/sentdm/models/conversation_messages_list.rb +0 -245
  214. data/lib/sentdm/models/error_detail.rb +0 -42
  215. data/lib/sentdm/models/mutation_request.rb +0 -20
  216. data/lib/sentdm/models/pagination_meta.rb +0 -80
  217. data/lib/sentdm/models/payment_details.rb +0 -44
  218. data/lib/sentdm/models/profile_detail.rb +0 -597
  219. data/lib/sentdm/models/profile_settings.rb +0 -66
  220. data/lib/sentdm/models/profiles/api_response_of_brand_campaign.rb +0 -45
  221. data/lib/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rb +0 -45
  222. data/lib/sentdm/models/profiles/brand_campaign.rb +0 -247
  223. data/lib/sentdm/models/profiles/campaign_data.rb +0 -130
  224. data/lib/sentdm/models/profiles/campaign_use_case.rb +0 -71
  225. data/lib/sentdm/models/profiles/campaign_use_case_data.rb +0 -29
  226. data/lib/sentdm/models/template.rb +0 -90
  227. data/lib/sentdm/models/user_response.rb +0 -82
  228. data/lib/sentdm/models/webhook_event_type.rb +0 -45
  229. data/lib/sentdm/models/webhook_response.rb +0 -95
  230. data/rbi/sentdm/models/api_meta.rbi +0 -55
  231. data/rbi/sentdm/models/api_response_of_contact.rbi +0 -74
  232. data/rbi/sentdm/models/api_response_of_contact_message_summary.rbi +0 -79
  233. data/rbi/sentdm/models/api_response_of_conversation_messages_list.rbi +0 -79
  234. data/rbi/sentdm/models/api_response_of_profile_detail.rbi +0 -74
  235. data/rbi/sentdm/models/api_response_of_user.rbi +0 -74
  236. data/rbi/sentdm/models/api_response_template.rbi +0 -74
  237. data/rbi/sentdm/models/api_response_webhook.rbi +0 -74
  238. data/rbi/sentdm/models/billing_contact_info.rbi +0 -65
  239. data/rbi/sentdm/models/brand_business_info.rbi +0 -162
  240. data/rbi/sentdm/models/brand_compliance_info.rbi +0 -84
  241. data/rbi/sentdm/models/brand_contact_info.rbi +0 -78
  242. data/rbi/sentdm/models/brands_brand_data.rbi +0 -65
  243. data/rbi/sentdm/models/contact_message_summary.rbi +0 -144
  244. data/rbi/sentdm/models/contact_response.rbi +0 -183
  245. data/rbi/sentdm/models/conversation_messages_list.rbi +0 -419
  246. data/rbi/sentdm/models/error_detail.rbi +0 -66
  247. data/rbi/sentdm/models/mutation_request.rbi +0 -32
  248. data/rbi/sentdm/models/pagination_meta.rbi +0 -135
  249. data/rbi/sentdm/models/payment_details.rbi +0 -59
  250. data/rbi/sentdm/models/profile_detail.rbi +0 -866
  251. data/rbi/sentdm/models/profile_settings.rbi +0 -86
  252. data/rbi/sentdm/models/profiles/api_response_of_brand_campaign.rbi +0 -81
  253. data/rbi/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbi +0 -76
  254. data/rbi/sentdm/models/profiles/brand_campaign.rbi +0 -299
  255. data/rbi/sentdm/models/profiles/campaign_data.rbi +0 -146
  256. data/rbi/sentdm/models/profiles/campaign_use_case.rbi +0 -110
  257. data/rbi/sentdm/models/profiles/campaign_use_case_data.rbi +0 -51
  258. data/rbi/sentdm/models/template.rbi +0 -129
  259. data/rbi/sentdm/models/user_response.rbi +0 -118
  260. data/rbi/sentdm/models/webhook_event_type.rbi +0 -74
  261. data/rbi/sentdm/models/webhook_response.rbi +0 -140
  262. data/sig/sentdm/models/api_meta.rbs +0 -27
  263. data/sig/sentdm/models/api_response_of_contact.rbs +0 -39
  264. data/sig/sentdm/models/api_response_of_contact_message_summary.rbs +0 -39
  265. data/sig/sentdm/models/api_response_of_conversation_messages_list.rbs +0 -39
  266. data/sig/sentdm/models/api_response_of_profile_detail.rbs +0 -39
  267. data/sig/sentdm/models/api_response_of_user.rbs +0 -39
  268. data/sig/sentdm/models/api_response_template.rbs +0 -39
  269. data/sig/sentdm/models/api_response_webhook.rbs +0 -39
  270. data/sig/sentdm/models/billing_contact_info.rbs +0 -30
  271. data/sig/sentdm/models/brand_business_info.rbs +0 -89
  272. data/sig/sentdm/models/brand_compliance_info.rbs +0 -50
  273. data/sig/sentdm/models/brand_contact_info.rbs +0 -45
  274. data/sig/sentdm/models/brands_brand_data.rbs +0 -30
  275. data/sig/sentdm/models/contact_message_summary.rbs +0 -84
  276. data/sig/sentdm/models/contact_response.rbs +0 -111
  277. data/sig/sentdm/models/conversation_messages_list.rbs +0 -240
  278. data/sig/sentdm/models/error_detail.rbs +0 -39
  279. data/sig/sentdm/models/mutation_request.rbs +0 -15
  280. data/sig/sentdm/models/pagination_meta.rbs +0 -67
  281. data/sig/sentdm/models/payment_details.rbs +0 -30
  282. data/sig/sentdm/models/profile_detail.rbs +0 -469
  283. data/sig/sentdm/models/profile_settings.rbs +0 -50
  284. data/sig/sentdm/models/profiles/api_response_of_brand_campaign.rbs +0 -41
  285. data/sig/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbs +0 -41
  286. data/sig/sentdm/models/profiles/brand_campaign.rbs +0 -194
  287. data/sig/sentdm/models/profiles/campaign_data.rbs +0 -87
  288. data/sig/sentdm/models/profiles/campaign_use_case.rbs +0 -66
  289. data/sig/sentdm/models/profiles/campaign_use_case_data.rbs +0 -27
  290. data/sig/sentdm/models/template.rbs +0 -79
  291. data/sig/sentdm/models/user_response.rbs +0 -72
  292. data/sig/sentdm/models/webhook_event_type.rbs +0 -51
  293. data/sig/sentdm/models/webhook_response.rbs +0 -103
@@ -0,0 +1,1226 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class ProfileCreateResponse < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Sentdm::Models::ProfileCreateResponse,
10
+ Sentdm::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # Detailed profile response for v3 API
15
+ sig { returns(T.nilable(Sentdm::Models::ProfileCreateResponse::Data)) }
16
+ attr_reader :data
17
+
18
+ sig do
19
+ params(
20
+ data: T.nilable(Sentdm::Models::ProfileCreateResponse::Data::OrHash)
21
+ ).void
22
+ end
23
+ attr_writer :data
24
+
25
+ # Error information
26
+ sig { returns(T.nilable(Sentdm::Models::ProfileCreateResponse::Error)) }
27
+ attr_reader :error
28
+
29
+ sig do
30
+ params(
31
+ error: T.nilable(Sentdm::Models::ProfileCreateResponse::Error::OrHash)
32
+ ).void
33
+ end
34
+ attr_writer :error
35
+
36
+ # Request and response metadata
37
+ sig { returns(T.nilable(Sentdm::Models::ProfileCreateResponse::Meta)) }
38
+ attr_reader :meta
39
+
40
+ sig do
41
+ params(meta: Sentdm::Models::ProfileCreateResponse::Meta::OrHash).void
42
+ end
43
+ attr_writer :meta
44
+
45
+ # Indicates whether the request was successful
46
+ sig { returns(T.nilable(T::Boolean)) }
47
+ attr_reader :success
48
+
49
+ sig { params(success: T::Boolean).void }
50
+ attr_writer :success
51
+
52
+ # Standard API response envelope for all v3 endpoints
53
+ sig do
54
+ params(
55
+ data: T.nilable(Sentdm::Models::ProfileCreateResponse::Data::OrHash),
56
+ error:
57
+ T.nilable(Sentdm::Models::ProfileCreateResponse::Error::OrHash),
58
+ meta: Sentdm::Models::ProfileCreateResponse::Meta::OrHash,
59
+ success: T::Boolean
60
+ ).returns(T.attached_class)
61
+ end
62
+ def self.new(
63
+ # Detailed profile response for v3 API
64
+ data: nil,
65
+ # Error information
66
+ error: nil,
67
+ # Request and response metadata
68
+ meta: nil,
69
+ # Indicates whether the request was successful
70
+ success: nil
71
+ )
72
+ end
73
+
74
+ sig do
75
+ override.returns(
76
+ {
77
+ data: T.nilable(Sentdm::Models::ProfileCreateResponse::Data),
78
+ error: T.nilable(Sentdm::Models::ProfileCreateResponse::Error),
79
+ meta: Sentdm::Models::ProfileCreateResponse::Meta,
80
+ success: T::Boolean
81
+ }
82
+ )
83
+ end
84
+ def to_hash
85
+ end
86
+
87
+ class Data < Sentdm::Internal::Type::BaseModel
88
+ OrHash =
89
+ T.type_alias do
90
+ T.any(
91
+ Sentdm::Models::ProfileCreateResponse::Data,
92
+ Sentdm::Internal::AnyHash
93
+ )
94
+ end
95
+
96
+ # Profile unique identifier
97
+ sig { returns(T.nilable(String)) }
98
+ attr_reader :id
99
+
100
+ sig { params(id: String).void }
101
+ attr_writer :id
102
+
103
+ # Always false. A profile no longer shares contacts with sibling profiles — it
104
+ # sees only what it owns. Retained so existing v3 clients reading
105
+ # allow_contact_sharing keep deserializing; it carries no information.
106
+ sig { returns(T.nilable(T::Boolean)) }
107
+ attr_accessor :allow_contact_sharing
108
+
109
+ # Whether number changes are allowed during onboarding
110
+ sig { returns(T.nilable(T::Boolean)) }
111
+ attr_accessor :allow_number_change_during_onboarding
112
+
113
+ # Always false. A profile no longer shares templates with sibling profiles.
114
+ # Retained so existing v3 clients reading allow_template_sharing keep
115
+ # deserializing; it carries no information.
116
+ sig { returns(T.nilable(T::Boolean)) }
117
+ attr_accessor :allow_template_sharing
118
+
119
+ # Billing contact info returned in profile responses
120
+ sig do
121
+ returns(
122
+ T.nilable(
123
+ Sentdm::Models::ProfileCreateResponse::Data::BillingContact
124
+ )
125
+ )
126
+ end
127
+ attr_reader :billing_contact
128
+
129
+ sig do
130
+ params(
131
+ billing_contact:
132
+ T.nilable(
133
+ Sentdm::Models::ProfileCreateResponse::Data::BillingContact::OrHash
134
+ )
135
+ ).void
136
+ end
137
+ attr_writer :billing_contact
138
+
139
+ # Billing model: profile, organization, or profile_and_organization
140
+ sig { returns(T.nilable(String)) }
141
+ attr_reader :billing_model
142
+
143
+ sig { params(billing_model: String).void }
144
+ attr_writer :billing_model
145
+
146
+ # Brand response with nested contact, business, and compliance sections — mirrors
147
+ # the request structure.
148
+ sig do
149
+ returns(T.nilable(Sentdm::Models::ProfileCreateResponse::Data::Brand))
150
+ end
151
+ attr_reader :brand
152
+
153
+ sig do
154
+ params(
155
+ brand:
156
+ T.nilable(
157
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::OrHash
158
+ )
159
+ ).void
160
+ end
161
+ attr_writer :brand
162
+
163
+ # When the profile was created
164
+ sig { returns(T.nilable(Time)) }
165
+ attr_reader :created_at
166
+
167
+ sig { params(created_at: Time).void }
168
+ attr_writer :created_at
169
+
170
+ # Profile description
171
+ sig { returns(T.nilable(String)) }
172
+ attr_accessor :description
173
+
174
+ # Profile email (inherited from organization)
175
+ sig { returns(T.nilable(String)) }
176
+ attr_accessor :email
177
+
178
+ # Profile icon URL
179
+ sig { returns(T.nilable(String)) }
180
+ attr_accessor :icon
181
+
182
+ # Always false. A profile no longer inherits its organization's contacts. Retained
183
+ # so existing v3 clients reading inherit_contacts keep deserializing; it carries
184
+ # no information.
185
+ sig { returns(T.nilable(T::Boolean)) }
186
+ attr_accessor :inherit_contacts
187
+
188
+ # Whether this profile inherits TCR brand from the organization
189
+ sig { returns(T.nilable(T::Boolean)) }
190
+ attr_reader :inherit_tcr_brand
191
+
192
+ sig { params(inherit_tcr_brand: T::Boolean).void }
193
+ attr_writer :inherit_tcr_brand
194
+
195
+ # Whether this profile inherits TCR campaign from the organization
196
+ sig { returns(T.nilable(T::Boolean)) }
197
+ attr_reader :inherit_tcr_campaign
198
+
199
+ sig { params(inherit_tcr_campaign: T::Boolean).void }
200
+ attr_writer :inherit_tcr_campaign
201
+
202
+ # Always false. A profile no longer inherits its organization's templates.
203
+ # Retained so existing v3 clients reading inherit_templates keep deserializing; it
204
+ # carries no information.
205
+ sig { returns(T.nilable(T::Boolean)) }
206
+ attr_accessor :inherit_templates
207
+
208
+ # Profile name
209
+ sig { returns(T.nilable(String)) }
210
+ attr_reader :name
211
+
212
+ sig { params(name: String).void }
213
+ attr_writer :name
214
+
215
+ # Parent organization ID
216
+ sig { returns(T.nilable(String)) }
217
+ attr_accessor :organization_id
218
+
219
+ # Direct SMS phone number
220
+ sig { returns(T.nilable(String)) }
221
+ attr_accessor :sending_phone_number
222
+
223
+ # Deprecated. Always null. Sender borrowing is gone: a profile no longer points at
224
+ # another profile for its SMS sender, and every profile owns the sender it sends
225
+ # from.
226
+ #
227
+ # Kept on the wire, and never populated, because those are two different promises.
228
+ # Removing the key changes the response's shape — a generated client loses the
229
+ # property and stops compiling on the next regenerate, for a value that is now
230
+ # null for every profile in existence. Keeping it null costs a key and breaks
231
+ # nobody, and null is the honest answer rather than a placeholder: there is no
232
+ # borrowing left to report.
233
+ #
234
+ # Nothing could populate it. Migration 260813161500 dropped the column and copied
235
+ # each borrower its own channel-provider row; its Down() says outright that the
236
+ # borrower-to-lender pairing is not recoverable. The only surviving trace is a
237
+ # notes string on the copied row.
238
+ sig { returns(T.nilable(String)) }
239
+ attr_accessor :sending_phone_number_profile_id
240
+
241
+ sig { returns(T.nilable(String)) }
242
+ attr_accessor :sending_whatsapp_number_profile_id
243
+
244
+ # Profile short name/abbreviation. 3–11 characters: letters, numbers, and spaces
245
+ # only, with at least one letter.
246
+ sig { returns(T.nilable(String)) }
247
+ attr_accessor :short_name
248
+
249
+ # Profile setup status: incomplete, pending_review, approved, rejected
250
+ sig { returns(T.nilable(String)) }
251
+ attr_reader :status
252
+
253
+ sig { params(status: String).void }
254
+ attr_writer :status
255
+
256
+ # When the profile was last updated
257
+ sig { returns(T.nilable(Time)) }
258
+ attr_accessor :updated_at
259
+
260
+ # WhatsApp Business Account ID associated with this profile. Present whether the
261
+ # WABA is inherited from the organization or configured directly.
262
+ sig { returns(T.nilable(String)) }
263
+ attr_accessor :waba_id
264
+
265
+ # Direct WhatsApp phone number
266
+ sig { returns(T.nilable(String)) }
267
+ attr_accessor :whatsapp_phone_number
268
+
269
+ # Detailed profile response for v3 API
270
+ sig do
271
+ params(
272
+ id: String,
273
+ allow_contact_sharing: T.nilable(T::Boolean),
274
+ allow_number_change_during_onboarding: T.nilable(T::Boolean),
275
+ allow_template_sharing: T.nilable(T::Boolean),
276
+ billing_contact:
277
+ T.nilable(
278
+ Sentdm::Models::ProfileCreateResponse::Data::BillingContact::OrHash
279
+ ),
280
+ billing_model: String,
281
+ brand:
282
+ T.nilable(
283
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::OrHash
284
+ ),
285
+ created_at: Time,
286
+ description: T.nilable(String),
287
+ email: T.nilable(String),
288
+ icon: T.nilable(String),
289
+ inherit_contacts: T.nilable(T::Boolean),
290
+ inherit_tcr_brand: T::Boolean,
291
+ inherit_tcr_campaign: T::Boolean,
292
+ inherit_templates: T.nilable(T::Boolean),
293
+ name: String,
294
+ organization_id: T.nilable(String),
295
+ sending_phone_number: T.nilable(String),
296
+ sending_phone_number_profile_id: T.nilable(String),
297
+ sending_whatsapp_number_profile_id: T.nilable(String),
298
+ short_name: T.nilable(String),
299
+ status: String,
300
+ updated_at: T.nilable(Time),
301
+ waba_id: T.nilable(String),
302
+ whatsapp_phone_number: T.nilable(String)
303
+ ).returns(T.attached_class)
304
+ end
305
+ def self.new(
306
+ # Profile unique identifier
307
+ id: nil,
308
+ # Always false. A profile no longer shares contacts with sibling profiles — it
309
+ # sees only what it owns. Retained so existing v3 clients reading
310
+ # allow_contact_sharing keep deserializing; it carries no information.
311
+ allow_contact_sharing: nil,
312
+ # Whether number changes are allowed during onboarding
313
+ allow_number_change_during_onboarding: nil,
314
+ # Always false. A profile no longer shares templates with sibling profiles.
315
+ # Retained so existing v3 clients reading allow_template_sharing keep
316
+ # deserializing; it carries no information.
317
+ allow_template_sharing: nil,
318
+ # Billing contact info returned in profile responses
319
+ billing_contact: nil,
320
+ # Billing model: profile, organization, or profile_and_organization
321
+ billing_model: nil,
322
+ # Brand response with nested contact, business, and compliance sections — mirrors
323
+ # the request structure.
324
+ brand: nil,
325
+ # When the profile was created
326
+ created_at: nil,
327
+ # Profile description
328
+ description: nil,
329
+ # Profile email (inherited from organization)
330
+ email: nil,
331
+ # Profile icon URL
332
+ icon: nil,
333
+ # Always false. A profile no longer inherits its organization's contacts. Retained
334
+ # so existing v3 clients reading inherit_contacts keep deserializing; it carries
335
+ # no information.
336
+ inherit_contacts: nil,
337
+ # Whether this profile inherits TCR brand from the organization
338
+ inherit_tcr_brand: nil,
339
+ # Whether this profile inherits TCR campaign from the organization
340
+ inherit_tcr_campaign: nil,
341
+ # Always false. A profile no longer inherits its organization's templates.
342
+ # Retained so existing v3 clients reading inherit_templates keep deserializing; it
343
+ # carries no information.
344
+ inherit_templates: nil,
345
+ # Profile name
346
+ name: nil,
347
+ # Parent organization ID
348
+ organization_id: nil,
349
+ # Direct SMS phone number
350
+ sending_phone_number: nil,
351
+ # Deprecated. Always null. Sender borrowing is gone: a profile no longer points at
352
+ # another profile for its SMS sender, and every profile owns the sender it sends
353
+ # from.
354
+ #
355
+ # Kept on the wire, and never populated, because those are two different promises.
356
+ # Removing the key changes the response's shape — a generated client loses the
357
+ # property and stops compiling on the next regenerate, for a value that is now
358
+ # null for every profile in existence. Keeping it null costs a key and breaks
359
+ # nobody, and null is the honest answer rather than a placeholder: there is no
360
+ # borrowing left to report.
361
+ #
362
+ # Nothing could populate it. Migration 260813161500 dropped the column and copied
363
+ # each borrower its own channel-provider row; its Down() says outright that the
364
+ # borrower-to-lender pairing is not recoverable. The only surviving trace is a
365
+ # notes string on the copied row.
366
+ sending_phone_number_profile_id: nil,
367
+ sending_whatsapp_number_profile_id: nil,
368
+ # Profile short name/abbreviation. 3–11 characters: letters, numbers, and spaces
369
+ # only, with at least one letter.
370
+ short_name: nil,
371
+ # Profile setup status: incomplete, pending_review, approved, rejected
372
+ status: nil,
373
+ # When the profile was last updated
374
+ updated_at: nil,
375
+ # WhatsApp Business Account ID associated with this profile. Present whether the
376
+ # WABA is inherited from the organization or configured directly.
377
+ waba_id: nil,
378
+ # Direct WhatsApp phone number
379
+ whatsapp_phone_number: nil
380
+ )
381
+ end
382
+
383
+ sig do
384
+ override.returns(
385
+ {
386
+ id: String,
387
+ allow_contact_sharing: T.nilable(T::Boolean),
388
+ allow_number_change_during_onboarding: T.nilable(T::Boolean),
389
+ allow_template_sharing: T.nilable(T::Boolean),
390
+ billing_contact:
391
+ T.nilable(
392
+ Sentdm::Models::ProfileCreateResponse::Data::BillingContact
393
+ ),
394
+ billing_model: String,
395
+ brand:
396
+ T.nilable(Sentdm::Models::ProfileCreateResponse::Data::Brand),
397
+ created_at: Time,
398
+ description: T.nilable(String),
399
+ email: T.nilable(String),
400
+ icon: T.nilable(String),
401
+ inherit_contacts: T.nilable(T::Boolean),
402
+ inherit_tcr_brand: T::Boolean,
403
+ inherit_tcr_campaign: T::Boolean,
404
+ inherit_templates: T.nilable(T::Boolean),
405
+ name: String,
406
+ organization_id: T.nilable(String),
407
+ sending_phone_number: T.nilable(String),
408
+ sending_phone_number_profile_id: T.nilable(String),
409
+ sending_whatsapp_number_profile_id: T.nilable(String),
410
+ short_name: T.nilable(String),
411
+ status: String,
412
+ updated_at: T.nilable(Time),
413
+ waba_id: T.nilable(String),
414
+ whatsapp_phone_number: T.nilable(String)
415
+ }
416
+ )
417
+ end
418
+ def to_hash
419
+ end
420
+
421
+ class BillingContact < Sentdm::Internal::Type::BaseModel
422
+ OrHash =
423
+ T.type_alias do
424
+ T.any(
425
+ Sentdm::Models::ProfileCreateResponse::Data::BillingContact,
426
+ Sentdm::Internal::AnyHash
427
+ )
428
+ end
429
+
430
+ sig { returns(T.nilable(String)) }
431
+ attr_accessor :address
432
+
433
+ sig { returns(T.nilable(String)) }
434
+ attr_accessor :email
435
+
436
+ sig { returns(T.nilable(String)) }
437
+ attr_accessor :name
438
+
439
+ sig { returns(T.nilable(String)) }
440
+ attr_accessor :phone
441
+
442
+ # Billing contact info returned in profile responses
443
+ sig do
444
+ params(
445
+ address: T.nilable(String),
446
+ email: T.nilable(String),
447
+ name: T.nilable(String),
448
+ phone: T.nilable(String)
449
+ ).returns(T.attached_class)
450
+ end
451
+ def self.new(address: nil, email: nil, name: nil, phone: nil)
452
+ end
453
+
454
+ sig do
455
+ override.returns(
456
+ {
457
+ address: T.nilable(String),
458
+ email: T.nilable(String),
459
+ name: T.nilable(String),
460
+ phone: T.nilable(String)
461
+ }
462
+ )
463
+ end
464
+ def to_hash
465
+ end
466
+ end
467
+
468
+ class Brand < Sentdm::Internal::Type::BaseModel
469
+ OrHash =
470
+ T.type_alias do
471
+ T.any(
472
+ Sentdm::Models::ProfileCreateResponse::Data::Brand,
473
+ Sentdm::Internal::AnyHash
474
+ )
475
+ end
476
+
477
+ # Unique identifier for the brand
478
+ sig { returns(T.nilable(String)) }
479
+ attr_reader :id
480
+
481
+ sig { params(id: String).void }
482
+ attr_writer :id
483
+
484
+ # Business details and address information
485
+ sig do
486
+ returns(
487
+ T.nilable(
488
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Business
489
+ )
490
+ )
491
+ end
492
+ attr_reader :business
493
+
494
+ sig do
495
+ params(
496
+ business:
497
+ T.nilable(
498
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Business::OrHash
499
+ )
500
+ ).void
501
+ end
502
+ attr_writer :business
503
+
504
+ # Compliance and TCR-related information
505
+ sig do
506
+ returns(
507
+ T.nilable(
508
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Compliance
509
+ )
510
+ )
511
+ end
512
+ attr_reader :compliance
513
+
514
+ sig do
515
+ params(
516
+ compliance:
517
+ T.nilable(
518
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Compliance::OrHash
519
+ )
520
+ ).void
521
+ end
522
+ attr_writer :compliance
523
+
524
+ # Contact information for the brand
525
+ sig do
526
+ returns(
527
+ T.nilable(
528
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Contact
529
+ )
530
+ )
531
+ end
532
+ attr_reader :contact
533
+
534
+ sig do
535
+ params(
536
+ contact:
537
+ T.nilable(
538
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Contact::OrHash
539
+ )
540
+ ).void
541
+ end
542
+ attr_writer :contact
543
+
544
+ # When the brand was created
545
+ sig { returns(T.nilable(Time)) }
546
+ attr_reader :created_at
547
+
548
+ sig { params(created_at: Time).void }
549
+ attr_writer :created_at
550
+
551
+ # Deprecated and scheduled for removal. Identifies the Campaign Service Provider
552
+ # that registered the brand, which is Sent, so the value is the same for every
553
+ # brand and every account. Nothing on your side can act on it and there is no
554
+ # replacement. Stop reading it.
555
+ sig { returns(T.nilable(String)) }
556
+ attr_accessor :csp_id
557
+
558
+ sig do
559
+ returns(
560
+ T.nilable(
561
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::IdentityStatus::TaggedSymbol
562
+ )
563
+ )
564
+ end
565
+ attr_accessor :identity_status
566
+
567
+ # Whether this brand is inherited from the parent organization
568
+ sig { returns(T.nilable(T::Boolean)) }
569
+ attr_reader :is_inherited
570
+
571
+ sig { params(is_inherited: T::Boolean).void }
572
+ attr_writer :is_inherited
573
+
574
+ sig do
575
+ returns(
576
+ T.nilable(
577
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Status::TaggedSymbol
578
+ )
579
+ )
580
+ end
581
+ attr_accessor :status
582
+
583
+ # When the brand was submitted to TCR
584
+ sig { returns(T.nilable(Time)) }
585
+ attr_accessor :submitted_at
586
+
587
+ # Whether this brand has been submitted to TCR
588
+ sig { returns(T.nilable(T::Boolean)) }
589
+ attr_reader :submitted_to_tcr
590
+
591
+ sig { params(submitted_to_tcr: T::Boolean).void }
592
+ attr_writer :submitted_to_tcr
593
+
594
+ # TCR brand ID (populated after TCR submission)
595
+ sig { returns(T.nilable(String)) }
596
+ attr_accessor :tcr_brand_id
597
+
598
+ # Universal EIN from TCR
599
+ sig { returns(T.nilable(String)) }
600
+ attr_accessor :universal_ein
601
+
602
+ # When the brand was last updated
603
+ sig { returns(T.nilable(Time)) }
604
+ attr_accessor :updated_at
605
+
606
+ # Brand response with nested contact, business, and compliance sections — mirrors
607
+ # the request structure.
608
+ sig do
609
+ params(
610
+ id: String,
611
+ business:
612
+ T.nilable(
613
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Business::OrHash
614
+ ),
615
+ compliance:
616
+ T.nilable(
617
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Compliance::OrHash
618
+ ),
619
+ contact:
620
+ T.nilable(
621
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Contact::OrHash
622
+ ),
623
+ created_at: Time,
624
+ csp_id: T.nilable(String),
625
+ identity_status:
626
+ T.nilable(
627
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::IdentityStatus::OrSymbol
628
+ ),
629
+ is_inherited: T::Boolean,
630
+ status:
631
+ T.nilable(
632
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Status::OrSymbol
633
+ ),
634
+ submitted_at: T.nilable(Time),
635
+ submitted_to_tcr: T::Boolean,
636
+ tcr_brand_id: T.nilable(String),
637
+ universal_ein: T.nilable(String),
638
+ updated_at: T.nilable(Time)
639
+ ).returns(T.attached_class)
640
+ end
641
+ def self.new(
642
+ # Unique identifier for the brand
643
+ id: nil,
644
+ # Business details and address information
645
+ business: nil,
646
+ # Compliance and TCR-related information
647
+ compliance: nil,
648
+ # Contact information for the brand
649
+ contact: nil,
650
+ # When the brand was created
651
+ created_at: nil,
652
+ # Deprecated and scheduled for removal. Identifies the Campaign Service Provider
653
+ # that registered the brand, which is Sent, so the value is the same for every
654
+ # brand and every account. Nothing on your side can act on it and there is no
655
+ # replacement. Stop reading it.
656
+ csp_id: nil,
657
+ identity_status: nil,
658
+ # Whether this brand is inherited from the parent organization
659
+ is_inherited: nil,
660
+ status: nil,
661
+ # When the brand was submitted to TCR
662
+ submitted_at: nil,
663
+ # Whether this brand has been submitted to TCR
664
+ submitted_to_tcr: nil,
665
+ # TCR brand ID (populated after TCR submission)
666
+ tcr_brand_id: nil,
667
+ # Universal EIN from TCR
668
+ universal_ein: nil,
669
+ # When the brand was last updated
670
+ updated_at: nil
671
+ )
672
+ end
673
+
674
+ sig do
675
+ override.returns(
676
+ {
677
+ id: String,
678
+ business:
679
+ T.nilable(
680
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Business
681
+ ),
682
+ compliance:
683
+ T.nilable(
684
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Compliance
685
+ ),
686
+ contact:
687
+ T.nilable(
688
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Contact
689
+ ),
690
+ created_at: Time,
691
+ csp_id: T.nilable(String),
692
+ identity_status:
693
+ T.nilable(
694
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::IdentityStatus::TaggedSymbol
695
+ ),
696
+ is_inherited: T::Boolean,
697
+ status:
698
+ T.nilable(
699
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Status::TaggedSymbol
700
+ ),
701
+ submitted_at: T.nilable(Time),
702
+ submitted_to_tcr: T::Boolean,
703
+ tcr_brand_id: T.nilable(String),
704
+ universal_ein: T.nilable(String),
705
+ updated_at: T.nilable(Time)
706
+ }
707
+ )
708
+ end
709
+ def to_hash
710
+ end
711
+
712
+ class Business < Sentdm::Internal::Type::BaseModel
713
+ OrHash =
714
+ T.type_alias do
715
+ T.any(
716
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Business,
717
+ Sentdm::Internal::AnyHash
718
+ )
719
+ end
720
+
721
+ # City
722
+ sig { returns(T.nilable(String)) }
723
+ attr_accessor :city
724
+
725
+ # Country code (e.g., US, CA)
726
+ sig { returns(T.nilable(String)) }
727
+ attr_accessor :country
728
+
729
+ # Country where the business is registered
730
+ sig { returns(T.nilable(String)) }
731
+ attr_accessor :country_of_registration
732
+
733
+ # Business entity type
734
+ sig { returns(T.nilable(String)) }
735
+ attr_accessor :entity_type
736
+
737
+ # Legal business name
738
+ sig { returns(T.nilable(String)) }
739
+ attr_accessor :legal_name
740
+
741
+ # Postal/ZIP code
742
+ sig { returns(T.nilable(String)) }
743
+ attr_accessor :postal_code
744
+
745
+ # State/province code
746
+ sig { returns(T.nilable(String)) }
747
+ attr_accessor :state
748
+
749
+ # Street address
750
+ sig { returns(T.nilable(String)) }
751
+ attr_accessor :street
752
+
753
+ # Tax ID/EIN number
754
+ sig { returns(T.nilable(String)) }
755
+ attr_accessor :tax_id
756
+
757
+ # Type of tax ID (e.g., us_ein, ca_bn)
758
+ sig { returns(T.nilable(String)) }
759
+ attr_accessor :tax_id_type
760
+
761
+ # Business website URL
762
+ sig { returns(T.nilable(String)) }
763
+ attr_accessor :url
764
+
765
+ # Business details and address information
766
+ sig do
767
+ params(
768
+ city: T.nilable(String),
769
+ country: T.nilable(String),
770
+ country_of_registration: T.nilable(String),
771
+ entity_type: T.nilable(String),
772
+ legal_name: T.nilable(String),
773
+ postal_code: T.nilable(String),
774
+ state: T.nilable(String),
775
+ street: T.nilable(String),
776
+ tax_id: T.nilable(String),
777
+ tax_id_type: T.nilable(String),
778
+ url: T.nilable(String)
779
+ ).returns(T.attached_class)
780
+ end
781
+ def self.new(
782
+ # City
783
+ city: nil,
784
+ # Country code (e.g., US, CA)
785
+ country: nil,
786
+ # Country where the business is registered
787
+ country_of_registration: nil,
788
+ # Business entity type
789
+ entity_type: nil,
790
+ # Legal business name
791
+ legal_name: nil,
792
+ # Postal/ZIP code
793
+ postal_code: nil,
794
+ # State/province code
795
+ state: nil,
796
+ # Street address
797
+ street: nil,
798
+ # Tax ID/EIN number
799
+ tax_id: nil,
800
+ # Type of tax ID (e.g., us_ein, ca_bn)
801
+ tax_id_type: nil,
802
+ # Business website URL
803
+ url: nil
804
+ )
805
+ end
806
+
807
+ sig do
808
+ override.returns(
809
+ {
810
+ city: T.nilable(String),
811
+ country: T.nilable(String),
812
+ country_of_registration: T.nilable(String),
813
+ entity_type: T.nilable(String),
814
+ legal_name: T.nilable(String),
815
+ postal_code: T.nilable(String),
816
+ state: T.nilable(String),
817
+ street: T.nilable(String),
818
+ tax_id: T.nilable(String),
819
+ tax_id_type: T.nilable(String),
820
+ url: T.nilable(String)
821
+ }
822
+ )
823
+ end
824
+ def to_hash
825
+ end
826
+ end
827
+
828
+ class Compliance < Sentdm::Internal::Type::BaseModel
829
+ OrHash =
830
+ T.type_alias do
831
+ T.any(
832
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Compliance,
833
+ Sentdm::Internal::AnyHash
834
+ )
835
+ end
836
+
837
+ sig do
838
+ returns(T.nilable(Sentdm::TcrBrandRelationship::TaggedSymbol))
839
+ end
840
+ attr_accessor :brand_relationship
841
+
842
+ # List of destination countries for messaging
843
+ sig { returns(T.nilable(T::Array[Sentdm::DestinationCountry])) }
844
+ attr_reader :destination_countries
845
+
846
+ sig do
847
+ params(
848
+ destination_countries:
849
+ T::Array[Sentdm::DestinationCountry::OrHash]
850
+ ).void
851
+ end
852
+ attr_writer :destination_countries
853
+
854
+ # Whether this is a TCR (Campaign Registry) application
855
+ sig { returns(T.nilable(T::Boolean)) }
856
+ attr_reader :is_tcr_application
857
+
858
+ sig { params(is_tcr_application: T::Boolean).void }
859
+ attr_writer :is_tcr_application
860
+
861
+ # Additional notes about the business or use case
862
+ sig { returns(T.nilable(String)) }
863
+ attr_accessor :notes
864
+
865
+ # Phone number prefix for messaging (e.g., "+1")
866
+ sig { returns(T.nilable(String)) }
867
+ attr_accessor :phone_number_prefix
868
+
869
+ # Always null. The brand's free-text primary use case is no longer stored: it
870
+ # reached neither TCR nor any decision, and its column is dropped with no
871
+ # backfill, because the values were prose and the typed equivalent is the
872
+ # campaign's MessagingUseCaseUS.
873
+ #
874
+ # Retained so existing v3 clients reading primary_use_case keep deserializing.
875
+ # Unlike the profile sharing flags, which can answer false truthfully, there is no
876
+ # value to report here — the field is present and empty rather than present and
877
+ # wrong.
878
+ sig { returns(T.nilable(String)) }
879
+ attr_accessor :primary_use_case
880
+
881
+ sig { returns(T.nilable(Sentdm::TcrVertical::TaggedSymbol)) }
882
+ attr_accessor :vertical
883
+
884
+ # Compliance and TCR-related information
885
+ sig do
886
+ params(
887
+ brand_relationship:
888
+ T.nilable(Sentdm::TcrBrandRelationship::OrSymbol),
889
+ destination_countries:
890
+ T::Array[Sentdm::DestinationCountry::OrHash],
891
+ is_tcr_application: T::Boolean,
892
+ notes: T.nilable(String),
893
+ phone_number_prefix: T.nilable(String),
894
+ primary_use_case: T.nilable(String),
895
+ vertical: T.nilable(Sentdm::TcrVertical::OrSymbol)
896
+ ).returns(T.attached_class)
897
+ end
898
+ def self.new(
899
+ brand_relationship: nil,
900
+ # List of destination countries for messaging
901
+ destination_countries: nil,
902
+ # Whether this is a TCR (Campaign Registry) application
903
+ is_tcr_application: nil,
904
+ # Additional notes about the business or use case
905
+ notes: nil,
906
+ # Phone number prefix for messaging (e.g., "+1")
907
+ phone_number_prefix: nil,
908
+ # Always null. The brand's free-text primary use case is no longer stored: it
909
+ # reached neither TCR nor any decision, and its column is dropped with no
910
+ # backfill, because the values were prose and the typed equivalent is the
911
+ # campaign's MessagingUseCaseUS.
912
+ #
913
+ # Retained so existing v3 clients reading primary_use_case keep deserializing.
914
+ # Unlike the profile sharing flags, which can answer false truthfully, there is no
915
+ # value to report here — the field is present and empty rather than present and
916
+ # wrong.
917
+ primary_use_case: nil,
918
+ vertical: nil
919
+ )
920
+ end
921
+
922
+ sig do
923
+ override.returns(
924
+ {
925
+ brand_relationship:
926
+ T.nilable(Sentdm::TcrBrandRelationship::TaggedSymbol),
927
+ destination_countries: T::Array[Sentdm::DestinationCountry],
928
+ is_tcr_application: T::Boolean,
929
+ notes: T.nilable(String),
930
+ phone_number_prefix: T.nilable(String),
931
+ primary_use_case: T.nilable(String),
932
+ vertical: T.nilable(Sentdm::TcrVertical::TaggedSymbol)
933
+ }
934
+ )
935
+ end
936
+ def to_hash
937
+ end
938
+ end
939
+
940
+ class Contact < Sentdm::Internal::Type::BaseModel
941
+ OrHash =
942
+ T.type_alias do
943
+ T.any(
944
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Contact,
945
+ Sentdm::Internal::AnyHash
946
+ )
947
+ end
948
+
949
+ # Business/brand name
950
+ sig { returns(T.nilable(String)) }
951
+ attr_accessor :business_name
952
+
953
+ # Contact email address
954
+ sig { returns(T.nilable(String)) }
955
+ attr_accessor :email
956
+
957
+ # Primary contact name
958
+ sig { returns(T.nilable(String)) }
959
+ attr_reader :name
960
+
961
+ sig { params(name: String).void }
962
+ attr_writer :name
963
+
964
+ # Contact phone number in E.164 format
965
+ sig { returns(T.nilable(String)) }
966
+ attr_accessor :phone
967
+
968
+ # Contact phone country code (e.g., "1" for US)
969
+ sig { returns(T.nilable(String)) }
970
+ attr_accessor :phone_country_code
971
+
972
+ # Contact's role in the business
973
+ sig { returns(T.nilable(String)) }
974
+ attr_accessor :role
975
+
976
+ # Contact information for the brand
977
+ sig do
978
+ params(
979
+ business_name: T.nilable(String),
980
+ email: T.nilable(String),
981
+ name: String,
982
+ phone: T.nilable(String),
983
+ phone_country_code: T.nilable(String),
984
+ role: T.nilable(String)
985
+ ).returns(T.attached_class)
986
+ end
987
+ def self.new(
988
+ # Business/brand name
989
+ business_name: nil,
990
+ # Contact email address
991
+ email: nil,
992
+ # Primary contact name
993
+ name: nil,
994
+ # Contact phone number in E.164 format
995
+ phone: nil,
996
+ # Contact phone country code (e.g., "1" for US)
997
+ phone_country_code: nil,
998
+ # Contact's role in the business
999
+ role: nil
1000
+ )
1001
+ end
1002
+
1003
+ sig do
1004
+ override.returns(
1005
+ {
1006
+ business_name: T.nilable(String),
1007
+ email: T.nilable(String),
1008
+ name: String,
1009
+ phone: T.nilable(String),
1010
+ phone_country_code: T.nilable(String),
1011
+ role: T.nilable(String)
1012
+ }
1013
+ )
1014
+ end
1015
+ def to_hash
1016
+ end
1017
+ end
1018
+
1019
+ module IdentityStatus
1020
+ extend Sentdm::Internal::Type::Enum
1021
+
1022
+ TaggedSymbol =
1023
+ T.type_alias do
1024
+ T.all(
1025
+ Symbol,
1026
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::IdentityStatus
1027
+ )
1028
+ end
1029
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1030
+
1031
+ SELF_DECLARED =
1032
+ T.let(
1033
+ :SELF_DECLARED,
1034
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::IdentityStatus::TaggedSymbol
1035
+ )
1036
+ UNVERIFIED =
1037
+ T.let(
1038
+ :UNVERIFIED,
1039
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::IdentityStatus::TaggedSymbol
1040
+ )
1041
+ VERIFIED =
1042
+ T.let(
1043
+ :VERIFIED,
1044
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::IdentityStatus::TaggedSymbol
1045
+ )
1046
+ VETTED_VERIFIED =
1047
+ T.let(
1048
+ :VETTED_VERIFIED,
1049
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::IdentityStatus::TaggedSymbol
1050
+ )
1051
+
1052
+ sig do
1053
+ override.returns(
1054
+ T::Array[
1055
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::IdentityStatus::TaggedSymbol
1056
+ ]
1057
+ )
1058
+ end
1059
+ def self.values
1060
+ end
1061
+ end
1062
+
1063
+ module Status
1064
+ extend Sentdm::Internal::Type::Enum
1065
+
1066
+ TaggedSymbol =
1067
+ T.type_alias do
1068
+ T.all(
1069
+ Symbol,
1070
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Status
1071
+ )
1072
+ end
1073
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1074
+
1075
+ ACTIVE =
1076
+ T.let(
1077
+ :ACTIVE,
1078
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Status::TaggedSymbol
1079
+ )
1080
+ INACTIVE =
1081
+ T.let(
1082
+ :INACTIVE,
1083
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Status::TaggedSymbol
1084
+ )
1085
+ SUSPENDED =
1086
+ T.let(
1087
+ :SUSPENDED,
1088
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Status::TaggedSymbol
1089
+ )
1090
+
1091
+ sig do
1092
+ override.returns(
1093
+ T::Array[
1094
+ Sentdm::Models::ProfileCreateResponse::Data::Brand::Status::TaggedSymbol
1095
+ ]
1096
+ )
1097
+ end
1098
+ def self.values
1099
+ end
1100
+ end
1101
+ end
1102
+ end
1103
+
1104
+ class Error < Sentdm::Internal::Type::BaseModel
1105
+ OrHash =
1106
+ T.type_alias do
1107
+ T.any(
1108
+ Sentdm::Models::ProfileCreateResponse::Error,
1109
+ Sentdm::Internal::AnyHash
1110
+ )
1111
+ end
1112
+
1113
+ # Machine-readable error code (e.g., "RESOURCE_001")
1114
+ sig { returns(T.nilable(String)) }
1115
+ attr_reader :code
1116
+
1117
+ sig { params(code: String).void }
1118
+ attr_writer :code
1119
+
1120
+ # Additional validation error details (field-level errors)
1121
+ sig { returns(T.nilable(T::Hash[Symbol, T::Array[String]])) }
1122
+ attr_accessor :details
1123
+
1124
+ # URL to documentation about this error
1125
+ sig { returns(T.nilable(String)) }
1126
+ attr_accessor :doc_url
1127
+
1128
+ # Human-readable error message
1129
+ sig { returns(T.nilable(String)) }
1130
+ attr_reader :message
1131
+
1132
+ sig { params(message: String).void }
1133
+ attr_writer :message
1134
+
1135
+ # Error information
1136
+ sig do
1137
+ params(
1138
+ code: String,
1139
+ details: T.nilable(T::Hash[Symbol, T::Array[String]]),
1140
+ doc_url: T.nilable(String),
1141
+ message: String
1142
+ ).returns(T.attached_class)
1143
+ end
1144
+ def self.new(
1145
+ # Machine-readable error code (e.g., "RESOURCE_001")
1146
+ code: nil,
1147
+ # Additional validation error details (field-level errors)
1148
+ details: nil,
1149
+ # URL to documentation about this error
1150
+ doc_url: nil,
1151
+ # Human-readable error message
1152
+ message: nil
1153
+ )
1154
+ end
1155
+
1156
+ sig do
1157
+ override.returns(
1158
+ {
1159
+ code: String,
1160
+ details: T.nilable(T::Hash[Symbol, T::Array[String]]),
1161
+ doc_url: T.nilable(String),
1162
+ message: String
1163
+ }
1164
+ )
1165
+ end
1166
+ def to_hash
1167
+ end
1168
+ end
1169
+
1170
+ class Meta < Sentdm::Internal::Type::BaseModel
1171
+ OrHash =
1172
+ T.type_alias do
1173
+ T.any(
1174
+ Sentdm::Models::ProfileCreateResponse::Meta,
1175
+ Sentdm::Internal::AnyHash
1176
+ )
1177
+ end
1178
+
1179
+ # Unique identifier for this request (for tracing and support)
1180
+ sig { returns(T.nilable(String)) }
1181
+ attr_reader :request_id
1182
+
1183
+ sig { params(request_id: String).void }
1184
+ attr_writer :request_id
1185
+
1186
+ # Server timestamp when the response was generated
1187
+ sig { returns(T.nilable(Time)) }
1188
+ attr_reader :timestamp
1189
+
1190
+ sig { params(timestamp: Time).void }
1191
+ attr_writer :timestamp
1192
+
1193
+ # API version used for this request
1194
+ sig { returns(T.nilable(String)) }
1195
+ attr_reader :version
1196
+
1197
+ sig { params(version: String).void }
1198
+ attr_writer :version
1199
+
1200
+ # Request and response metadata
1201
+ sig do
1202
+ params(request_id: String, timestamp: Time, version: String).returns(
1203
+ T.attached_class
1204
+ )
1205
+ end
1206
+ def self.new(
1207
+ # Unique identifier for this request (for tracing and support)
1208
+ request_id: nil,
1209
+ # Server timestamp when the response was generated
1210
+ timestamp: nil,
1211
+ # API version used for this request
1212
+ version: nil
1213
+ )
1214
+ end
1215
+
1216
+ sig do
1217
+ override.returns(
1218
+ { request_id: String, timestamp: Time, version: String }
1219
+ )
1220
+ end
1221
+ def to_hash
1222
+ end
1223
+ end
1224
+ end
1225
+ end
1226
+ end