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
@@ -11,28 +11,36 @@ module Sentdm
11
11
  T.any(Sentdm::ProfileCreateParams, Sentdm::Internal::AnyHash)
12
12
  end
13
13
 
14
- # Whether contacts are shared across profiles (default: false)
14
+ # Deprecated. Accepted and ignored. Contact and template sharing between sender
15
+ # profiles is gone — a profile sees only what it owns, and the organization still
16
+ # sees all of its profiles' contacts and templates through read-time widening. The
17
+ # four columns behind these flags were dropped by M260720120000.
18
+ #
19
+ # Bound rather than dropped so the properties survive on the wire and in a
20
+ # generated client: an SDK that assigns them keeps compiling, which is the
21
+ # compatibility this exists for. Deliberately not refused either — a 400 would
22
+ # break an integration that is otherwise working, and the capability they ask for
23
+ # is gone either way. Same rule as SendingPhoneNumberProfileId.
24
+ #
25
+ # The read is what makes this survivable: every profile reports all four as false,
26
+ # so a caller that checks its own write can see it did not take. Requests carrying
27
+ # one are logged, so we can tell when nobody sends them any more and the fields
28
+ # can go for real.
15
29
  sig { returns(T.nilable(T::Boolean)) }
16
- attr_reader :allow_contact_sharing
17
-
18
- sig { params(allow_contact_sharing: T::Boolean).void }
19
- attr_writer :allow_contact_sharing
30
+ attr_accessor :allow_contact_sharing
20
31
 
21
- # Whether templates are shared across profiles (default: false)
22
32
  sig { returns(T.nilable(T::Boolean)) }
23
- attr_reader :allow_template_sharing
24
-
25
- sig { params(allow_template_sharing: T::Boolean).void }
26
- attr_writer :allow_template_sharing
33
+ attr_accessor :allow_template_sharing
27
34
 
28
35
  # Billing contact information for a profile. Required when billing_model is
29
36
  # "profile" or "profile_and_organization".
30
- sig { returns(T.nilable(Sentdm::BillingContactInfo)) }
37
+ sig { returns(T.nilable(Sentdm::ProfileCreateParams::BillingContact)) }
31
38
  attr_reader :billing_contact
32
39
 
33
40
  sig do
34
41
  params(
35
- billing_contact: T.nilable(Sentdm::BillingContactInfo::OrHash)
42
+ billing_contact:
43
+ T.nilable(Sentdm::ProfileCreateParams::BillingContact::OrHash)
36
44
  ).void
37
45
  end
38
46
  attr_writer :billing_contact
@@ -49,10 +57,14 @@ module Sentdm
49
57
  attr_accessor :billing_model
50
58
 
51
59
  # Brand and KYC data grouped into contact, business, and compliance sections
52
- sig { returns(T.nilable(Sentdm::BrandsBrandData)) }
60
+ sig { returns(T.nilable(Sentdm::ProfileCreateParams::Brand)) }
53
61
  attr_reader :brand
54
62
 
55
- sig { params(brand: T.nilable(Sentdm::BrandsBrandData::OrHash)).void }
63
+ sig do
64
+ params(
65
+ brand: T.nilable(Sentdm::ProfileCreateParams::Brand::OrHash)
66
+ ).void
67
+ end
56
68
  attr_writer :brand
57
69
 
58
70
  # Profile description (optional)
@@ -63,19 +75,17 @@ module Sentdm
63
75
  sig { returns(T.nilable(String)) }
64
76
  attr_accessor :icon
65
77
 
66
- # Whether this profile inherits contacts from organization (default: true)
67
78
  sig { returns(T.nilable(T::Boolean)) }
68
79
  attr_accessor :inherit_contacts
69
80
 
70
- # Whether this profile inherits TCR brand from organization (default: true)
81
+ # Whether this profile inherits TCR brand from organization (default: false)
71
82
  sig { returns(T.nilable(T::Boolean)) }
72
83
  attr_accessor :inherit_tcr_brand
73
84
 
74
- # Whether this profile inherits TCR campaign from organization (default: true)
85
+ # Whether this profile inherits TCR campaign from organization (default: false)
75
86
  sig { returns(T.nilable(T::Boolean)) }
76
87
  attr_accessor :inherit_tcr_campaign
77
88
 
78
- # Whether this profile inherits templates from organization (default: true)
79
89
  sig { returns(T.nilable(T::Boolean)) }
80
90
  attr_accessor :inherit_templates
81
91
 
@@ -86,14 +96,17 @@ module Sentdm
86
96
  sig { params(name: String).void }
87
97
  attr_writer :name
88
98
 
89
- # Payment card details for a profile. Accepted when billing_model is "profile" or
90
- # "profile_and_organization". These details are not stored on our servers and will
91
- # be forwarded to the payment processor.
92
- sig { returns(T.nilable(Sentdm::PaymentDetails)) }
99
+ # Payment card details for this profile (optional). Accepted when billing_model is
100
+ # "profile" or "profile_and_organization". Not persisted on our servers
101
+ # forwarded to the payment processor.
102
+ sig { returns(T.nilable(Sentdm::ProfileCreateParams::PaymentDetails)) }
93
103
  attr_reader :payment_details
94
104
 
95
105
  sig do
96
- params(payment_details: T.nilable(Sentdm::PaymentDetails::OrHash)).void
106
+ params(
107
+ payment_details:
108
+ T.nilable(Sentdm::ProfileCreateParams::PaymentDetails::OrHash)
109
+ ).void
97
110
  end
98
111
  attr_writer :payment_details
99
112
 
@@ -145,11 +158,12 @@ module Sentdm
145
158
 
146
159
  sig do
147
160
  params(
148
- allow_contact_sharing: T::Boolean,
149
- allow_template_sharing: T::Boolean,
150
- billing_contact: T.nilable(Sentdm::BillingContactInfo::OrHash),
161
+ allow_contact_sharing: T.nilable(T::Boolean),
162
+ allow_template_sharing: T.nilable(T::Boolean),
163
+ billing_contact:
164
+ T.nilable(Sentdm::ProfileCreateParams::BillingContact::OrHash),
151
165
  billing_model: T.nilable(String),
152
- brand: T.nilable(Sentdm::BrandsBrandData::OrHash),
166
+ brand: T.nilable(Sentdm::ProfileCreateParams::Brand::OrHash),
153
167
  description: T.nilable(String),
154
168
  icon: T.nilable(String),
155
169
  inherit_contacts: T.nilable(T::Boolean),
@@ -157,7 +171,8 @@ module Sentdm
157
171
  inherit_tcr_campaign: T.nilable(T::Boolean),
158
172
  inherit_templates: T.nilable(T::Boolean),
159
173
  name: String,
160
- payment_details: T.nilable(Sentdm::PaymentDetails::OrHash),
174
+ payment_details:
175
+ T.nilable(Sentdm::ProfileCreateParams::PaymentDetails::OrHash),
161
176
  sandbox: T::Boolean,
162
177
  short_name: T.nilable(String),
163
178
  whatsapp_business_account:
@@ -170,9 +185,22 @@ module Sentdm
170
185
  ).returns(T.attached_class)
171
186
  end
172
187
  def self.new(
173
- # Whether contacts are shared across profiles (default: false)
188
+ # Deprecated. Accepted and ignored. Contact and template sharing between sender
189
+ # profiles is gone — a profile sees only what it owns, and the organization still
190
+ # sees all of its profiles' contacts and templates through read-time widening. The
191
+ # four columns behind these flags were dropped by M260720120000.
192
+ #
193
+ # Bound rather than dropped so the properties survive on the wire and in a
194
+ # generated client: an SDK that assigns them keeps compiling, which is the
195
+ # compatibility this exists for. Deliberately not refused either — a 400 would
196
+ # break an integration that is otherwise working, and the capability they ask for
197
+ # is gone either way. Same rule as SendingPhoneNumberProfileId.
198
+ #
199
+ # The read is what makes this survivable: every profile reports all four as false,
200
+ # so a caller that checks its own write can see it did not take. Requests carrying
201
+ # one are logged, so we can tell when nobody sends them any more and the fields
202
+ # can go for real.
174
203
  allow_contact_sharing: nil,
175
- # Whether templates are shared across profiles (default: false)
176
204
  allow_template_sharing: nil,
177
205
  # Billing contact information for a profile. Required when billing_model is
178
206
  # "profile" or "profile_and_organization".
@@ -192,19 +220,17 @@ module Sentdm
192
220
  description: nil,
193
221
  # Profile icon URL (optional)
194
222
  icon: nil,
195
- # Whether this profile inherits contacts from organization (default: true)
196
223
  inherit_contacts: nil,
197
- # Whether this profile inherits TCR brand from organization (default: true)
224
+ # Whether this profile inherits TCR brand from organization (default: false)
198
225
  inherit_tcr_brand: nil,
199
- # Whether this profile inherits TCR campaign from organization (default: true)
226
+ # Whether this profile inherits TCR campaign from organization (default: false)
200
227
  inherit_tcr_campaign: nil,
201
- # Whether this profile inherits templates from organization (default: true)
202
228
  inherit_templates: nil,
203
229
  # Profile name (required)
204
230
  name: nil,
205
- # Payment card details for a profile. Accepted when billing_model is "profile" or
206
- # "profile_and_organization". These details are not stored on our servers and will
207
- # be forwarded to the payment processor.
231
+ # Payment card details for this profile (optional). Accepted when billing_model is
232
+ # "profile" or "profile_and_organization". Not persisted on our servers
233
+ # forwarded to the payment processor.
208
234
  payment_details: nil,
209
235
  # Sandbox flag - when true, the operation is simulated without side effects Useful
210
236
  # for testing integrations without actual execution
@@ -228,11 +254,12 @@ module Sentdm
228
254
  sig do
229
255
  override.returns(
230
256
  {
231
- allow_contact_sharing: T::Boolean,
232
- allow_template_sharing: T::Boolean,
233
- billing_contact: T.nilable(Sentdm::BillingContactInfo),
257
+ allow_contact_sharing: T.nilable(T::Boolean),
258
+ allow_template_sharing: T.nilable(T::Boolean),
259
+ billing_contact:
260
+ T.nilable(Sentdm::ProfileCreateParams::BillingContact),
234
261
  billing_model: T.nilable(String),
235
- brand: T.nilable(Sentdm::BrandsBrandData),
262
+ brand: T.nilable(Sentdm::ProfileCreateParams::Brand),
236
263
  description: T.nilable(String),
237
264
  icon: T.nilable(String),
238
265
  inherit_contacts: T.nilable(T::Boolean),
@@ -240,7 +267,8 @@ module Sentdm
240
267
  inherit_tcr_campaign: T.nilable(T::Boolean),
241
268
  inherit_templates: T.nilable(T::Boolean),
242
269
  name: String,
243
- payment_details: T.nilable(Sentdm::PaymentDetails),
270
+ payment_details:
271
+ T.nilable(Sentdm::ProfileCreateParams::PaymentDetails),
244
272
  sandbox: T::Boolean,
245
273
  short_name: T.nilable(String),
246
274
  whatsapp_business_account:
@@ -254,6 +282,528 @@ module Sentdm
254
282
  def to_hash
255
283
  end
256
284
 
285
+ class BillingContact < Sentdm::Internal::Type::BaseModel
286
+ OrHash =
287
+ T.type_alias do
288
+ T.any(
289
+ Sentdm::ProfileCreateParams::BillingContact,
290
+ Sentdm::Internal::AnyHash
291
+ )
292
+ end
293
+
294
+ # Email address where invoices will be sent (required)
295
+ sig { returns(String) }
296
+ attr_accessor :email
297
+
298
+ # Full name of the billing contact or company (required)
299
+ sig { returns(String) }
300
+ attr_accessor :name
301
+
302
+ # Billing address (optional). Free-form text including street, city, state, postal
303
+ # code, and country.
304
+ sig { returns(T.nilable(String)) }
305
+ attr_accessor :address
306
+
307
+ # Phone number for the billing contact (optional)
308
+ sig { returns(T.nilable(String)) }
309
+ attr_accessor :phone
310
+
311
+ # Billing contact information for a profile. Required when billing_model is
312
+ # "profile" or "profile_and_organization".
313
+ sig do
314
+ params(
315
+ email: String,
316
+ name: String,
317
+ address: T.nilable(String),
318
+ phone: T.nilable(String)
319
+ ).returns(T.attached_class)
320
+ end
321
+ def self.new(
322
+ # Email address where invoices will be sent (required)
323
+ email:,
324
+ # Full name of the billing contact or company (required)
325
+ name:,
326
+ # Billing address (optional). Free-form text including street, city, state, postal
327
+ # code, and country.
328
+ address: nil,
329
+ # Phone number for the billing contact (optional)
330
+ phone: nil
331
+ )
332
+ end
333
+
334
+ sig do
335
+ override.returns(
336
+ {
337
+ email: String,
338
+ name: String,
339
+ address: T.nilable(String),
340
+ phone: T.nilable(String)
341
+ }
342
+ )
343
+ end
344
+ def to_hash
345
+ end
346
+ end
347
+
348
+ class Brand < Sentdm::Internal::Type::BaseModel
349
+ OrHash =
350
+ T.type_alias do
351
+ T.any(Sentdm::ProfileCreateParams::Brand, Sentdm::Internal::AnyHash)
352
+ end
353
+
354
+ # Compliance and TCR information for brand registration
355
+ sig { returns(Sentdm::ProfileCreateParams::Brand::Compliance) }
356
+ attr_reader :compliance
357
+
358
+ sig do
359
+ params(
360
+ compliance: Sentdm::ProfileCreateParams::Brand::Compliance::OrHash
361
+ ).void
362
+ end
363
+ attr_writer :compliance
364
+
365
+ # Contact information for brand KYC
366
+ sig { returns(Sentdm::ProfileCreateParams::Brand::Contact) }
367
+ attr_reader :contact
368
+
369
+ sig do
370
+ params(
371
+ contact: Sentdm::ProfileCreateParams::Brand::Contact::OrHash
372
+ ).void
373
+ end
374
+ attr_writer :contact
375
+
376
+ # Business details and address for brand KYC
377
+ sig { returns(T.nilable(Sentdm::ProfileCreateParams::Brand::Business)) }
378
+ attr_reader :business
379
+
380
+ sig do
381
+ params(
382
+ business:
383
+ T.nilable(Sentdm::ProfileCreateParams::Brand::Business::OrHash)
384
+ ).void
385
+ end
386
+ attr_writer :business
387
+
388
+ # Brand and KYC data grouped into contact, business, and compliance sections
389
+ sig do
390
+ params(
391
+ compliance: Sentdm::ProfileCreateParams::Brand::Compliance::OrHash,
392
+ contact: Sentdm::ProfileCreateParams::Brand::Contact::OrHash,
393
+ business:
394
+ T.nilable(Sentdm::ProfileCreateParams::Brand::Business::OrHash)
395
+ ).returns(T.attached_class)
396
+ end
397
+ def self.new(
398
+ # Compliance and TCR information for brand registration
399
+ compliance:,
400
+ # Contact information for brand KYC
401
+ contact:,
402
+ # Business details and address for brand KYC
403
+ business: nil
404
+ )
405
+ end
406
+
407
+ sig do
408
+ override.returns(
409
+ {
410
+ compliance: Sentdm::ProfileCreateParams::Brand::Compliance,
411
+ contact: Sentdm::ProfileCreateParams::Brand::Contact,
412
+ business: T.nilable(Sentdm::ProfileCreateParams::Brand::Business)
413
+ }
414
+ )
415
+ end
416
+ def to_hash
417
+ end
418
+
419
+ class Compliance < Sentdm::Internal::Type::BaseModel
420
+ OrHash =
421
+ T.type_alias do
422
+ T.any(
423
+ Sentdm::ProfileCreateParams::Brand::Compliance,
424
+ Sentdm::Internal::AnyHash
425
+ )
426
+ end
427
+
428
+ sig { returns(Sentdm::TcrBrandRelationship::OrSymbol) }
429
+ attr_accessor :brand_relationship
430
+
431
+ sig { returns(Sentdm::TcrVertical::OrSymbol) }
432
+ attr_accessor :vertical
433
+
434
+ # List of destination countries for messaging
435
+ sig { returns(T.nilable(T::Array[Sentdm::DestinationCountry])) }
436
+ attr_accessor :destination_countries
437
+
438
+ # Whether this is a TCR (Campaign Registry) application
439
+ sig { returns(T.nilable(T::Boolean)) }
440
+ attr_accessor :is_tcr_application
441
+
442
+ # Additional notes about the business or use case
443
+ sig { returns(T.nilable(String)) }
444
+ attr_accessor :notes
445
+
446
+ # Phone number prefix for messaging (e.g., "+1")
447
+ sig { returns(T.nilable(String)) }
448
+ attr_accessor :phone_number_prefix
449
+
450
+ # Compliance and TCR information for brand registration
451
+ sig do
452
+ params(
453
+ brand_relationship: Sentdm::TcrBrandRelationship::OrSymbol,
454
+ vertical: Sentdm::TcrVertical::OrSymbol,
455
+ destination_countries:
456
+ T.nilable(T::Array[Sentdm::DestinationCountry::OrHash]),
457
+ is_tcr_application: T.nilable(T::Boolean),
458
+ notes: T.nilable(String),
459
+ phone_number_prefix: T.nilable(String)
460
+ ).returns(T.attached_class)
461
+ end
462
+ def self.new(
463
+ brand_relationship:,
464
+ vertical:,
465
+ # List of destination countries for messaging
466
+ destination_countries: nil,
467
+ # Whether this is a TCR (Campaign Registry) application
468
+ is_tcr_application: nil,
469
+ # Additional notes about the business or use case
470
+ notes: nil,
471
+ # Phone number prefix for messaging (e.g., "+1")
472
+ phone_number_prefix: nil
473
+ )
474
+ end
475
+
476
+ sig do
477
+ override.returns(
478
+ {
479
+ brand_relationship: Sentdm::TcrBrandRelationship::OrSymbol,
480
+ vertical: Sentdm::TcrVertical::OrSymbol,
481
+ destination_countries:
482
+ T.nilable(T::Array[Sentdm::DestinationCountry]),
483
+ is_tcr_application: T.nilable(T::Boolean),
484
+ notes: T.nilable(String),
485
+ phone_number_prefix: T.nilable(String)
486
+ }
487
+ )
488
+ end
489
+ def to_hash
490
+ end
491
+ end
492
+
493
+ class Contact < Sentdm::Internal::Type::BaseModel
494
+ OrHash =
495
+ T.type_alias do
496
+ T.any(
497
+ Sentdm::ProfileCreateParams::Brand::Contact,
498
+ Sentdm::Internal::AnyHash
499
+ )
500
+ end
501
+
502
+ # Primary contact name (required)
503
+ sig { returns(String) }
504
+ attr_accessor :name
505
+
506
+ # Business/brand name
507
+ sig { returns(T.nilable(String)) }
508
+ attr_accessor :business_name
509
+
510
+ # Contact email address
511
+ sig { returns(T.nilable(String)) }
512
+ attr_accessor :email
513
+
514
+ # Contact phone number in E.164 format
515
+ sig { returns(T.nilable(String)) }
516
+ attr_accessor :phone
517
+
518
+ # Contact phone country code (e.g., "1" for US)
519
+ sig { returns(T.nilable(String)) }
520
+ attr_accessor :phone_country_code
521
+
522
+ # Contact's role in the business
523
+ sig { returns(T.nilable(String)) }
524
+ attr_accessor :role
525
+
526
+ # Contact information for brand KYC
527
+ sig do
528
+ params(
529
+ name: String,
530
+ business_name: T.nilable(String),
531
+ email: T.nilable(String),
532
+ phone: T.nilable(String),
533
+ phone_country_code: T.nilable(String),
534
+ role: T.nilable(String)
535
+ ).returns(T.attached_class)
536
+ end
537
+ def self.new(
538
+ # Primary contact name (required)
539
+ name:,
540
+ # Business/brand name
541
+ business_name: nil,
542
+ # Contact email address
543
+ email: nil,
544
+ # Contact phone number in E.164 format
545
+ phone: nil,
546
+ # Contact phone country code (e.g., "1" for US)
547
+ phone_country_code: nil,
548
+ # Contact's role in the business
549
+ role: nil
550
+ )
551
+ end
552
+
553
+ sig do
554
+ override.returns(
555
+ {
556
+ name: String,
557
+ business_name: T.nilable(String),
558
+ email: T.nilable(String),
559
+ phone: T.nilable(String),
560
+ phone_country_code: T.nilable(String),
561
+ role: T.nilable(String)
562
+ }
563
+ )
564
+ end
565
+ def to_hash
566
+ end
567
+ end
568
+
569
+ class Business < Sentdm::Internal::Type::BaseModel
570
+ OrHash =
571
+ T.type_alias do
572
+ T.any(
573
+ Sentdm::ProfileCreateParams::Brand::Business,
574
+ Sentdm::Internal::AnyHash
575
+ )
576
+ end
577
+
578
+ # City
579
+ sig { returns(T.nilable(String)) }
580
+ attr_accessor :city
581
+
582
+ # Country code (e.g., US, CA)
583
+ sig { returns(T.nilable(String)) }
584
+ attr_accessor :country
585
+
586
+ # Country where the business is registered
587
+ sig { returns(T.nilable(String)) }
588
+ attr_accessor :country_of_registration
589
+
590
+ sig do
591
+ returns(
592
+ T.nilable(
593
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType::OrSymbol
594
+ )
595
+ )
596
+ end
597
+ attr_accessor :entity_type
598
+
599
+ # Legal business name
600
+ sig { returns(T.nilable(String)) }
601
+ attr_accessor :legal_name
602
+
603
+ # Postal/ZIP code
604
+ sig { returns(T.nilable(String)) }
605
+ attr_accessor :postal_code
606
+
607
+ # State/province code
608
+ sig { returns(T.nilable(String)) }
609
+ attr_accessor :state
610
+
611
+ # Street address
612
+ sig { returns(T.nilable(String)) }
613
+ attr_accessor :street
614
+
615
+ # Tax ID/EIN number
616
+ sig { returns(T.nilable(String)) }
617
+ attr_accessor :tax_id
618
+
619
+ # Type of tax ID (e.g., us_ein, ca_bn)
620
+ sig { returns(T.nilable(String)) }
621
+ attr_accessor :tax_id_type
622
+
623
+ # Business website URL
624
+ sig { returns(T.nilable(String)) }
625
+ attr_accessor :url
626
+
627
+ # Business details and address for brand KYC
628
+ sig do
629
+ params(
630
+ city: T.nilable(String),
631
+ country: T.nilable(String),
632
+ country_of_registration: T.nilable(String),
633
+ entity_type:
634
+ T.nilable(
635
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType::OrSymbol
636
+ ),
637
+ legal_name: T.nilable(String),
638
+ postal_code: T.nilable(String),
639
+ state: T.nilable(String),
640
+ street: T.nilable(String),
641
+ tax_id: T.nilable(String),
642
+ tax_id_type: T.nilable(String),
643
+ url: T.nilable(String)
644
+ ).returns(T.attached_class)
645
+ end
646
+ def self.new(
647
+ # City
648
+ city: nil,
649
+ # Country code (e.g., US, CA)
650
+ country: nil,
651
+ # Country where the business is registered
652
+ country_of_registration: nil,
653
+ entity_type: nil,
654
+ # Legal business name
655
+ legal_name: nil,
656
+ # Postal/ZIP code
657
+ postal_code: nil,
658
+ # State/province code
659
+ state: nil,
660
+ # Street address
661
+ street: nil,
662
+ # Tax ID/EIN number
663
+ tax_id: nil,
664
+ # Type of tax ID (e.g., us_ein, ca_bn)
665
+ tax_id_type: nil,
666
+ # Business website URL
667
+ url: nil
668
+ )
669
+ end
670
+
671
+ sig do
672
+ override.returns(
673
+ {
674
+ city: T.nilable(String),
675
+ country: T.nilable(String),
676
+ country_of_registration: T.nilable(String),
677
+ entity_type:
678
+ T.nilable(
679
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType::OrSymbol
680
+ ),
681
+ legal_name: T.nilable(String),
682
+ postal_code: T.nilable(String),
683
+ state: T.nilable(String),
684
+ street: T.nilable(String),
685
+ tax_id: T.nilable(String),
686
+ tax_id_type: T.nilable(String),
687
+ url: T.nilable(String)
688
+ }
689
+ )
690
+ end
691
+ def to_hash
692
+ end
693
+
694
+ module EntityType
695
+ extend Sentdm::Internal::Type::Enum
696
+
697
+ TaggedSymbol =
698
+ T.type_alias do
699
+ T.all(
700
+ Symbol,
701
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType
702
+ )
703
+ end
704
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
705
+
706
+ PRIVATE_PROFIT =
707
+ T.let(
708
+ :PRIVATE_PROFIT,
709
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType::TaggedSymbol
710
+ )
711
+ PUBLIC_PROFIT =
712
+ T.let(
713
+ :PUBLIC_PROFIT,
714
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType::TaggedSymbol
715
+ )
716
+ NON_PROFIT =
717
+ T.let(
718
+ :NON_PROFIT,
719
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType::TaggedSymbol
720
+ )
721
+ SOLE_PROPRIETOR =
722
+ T.let(
723
+ :SOLE_PROPRIETOR,
724
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType::TaggedSymbol
725
+ )
726
+ GOVERNMENT =
727
+ T.let(
728
+ :GOVERNMENT,
729
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType::TaggedSymbol
730
+ )
731
+
732
+ sig do
733
+ override.returns(
734
+ T::Array[
735
+ Sentdm::ProfileCreateParams::Brand::Business::EntityType::TaggedSymbol
736
+ ]
737
+ )
738
+ end
739
+ def self.values
740
+ end
741
+ end
742
+ end
743
+ end
744
+
745
+ class PaymentDetails < Sentdm::Internal::Type::BaseModel
746
+ OrHash =
747
+ T.type_alias do
748
+ T.any(
749
+ Sentdm::ProfileCreateParams::PaymentDetails,
750
+ Sentdm::Internal::AnyHash
751
+ )
752
+ end
753
+
754
+ # Card number (digits only, 13–19 characters)
755
+ sig { returns(String) }
756
+ attr_accessor :card_number
757
+
758
+ # Card security code (3–4 digits)
759
+ sig { returns(String) }
760
+ attr_accessor :cvc
761
+
762
+ # Card expiry date in MM/YY format (e.g. "09/27")
763
+ sig { returns(String) }
764
+ attr_accessor :expiry
765
+
766
+ # Billing ZIP / postal code associated with the card
767
+ sig { returns(String) }
768
+ attr_accessor :zip_code
769
+
770
+ # Payment card details for this profile (optional). Accepted when billing_model is
771
+ # "profile" or "profile_and_organization". Not persisted on our servers —
772
+ # forwarded to the payment processor.
773
+ sig do
774
+ params(
775
+ card_number: String,
776
+ cvc: String,
777
+ expiry: String,
778
+ zip_code: String
779
+ ).returns(T.attached_class)
780
+ end
781
+ def self.new(
782
+ # Card number (digits only, 13–19 characters)
783
+ card_number:,
784
+ # Card security code (3–4 digits)
785
+ cvc:,
786
+ # Card expiry date in MM/YY format (e.g. "09/27")
787
+ expiry:,
788
+ # Billing ZIP / postal code associated with the card
789
+ zip_code:
790
+ )
791
+ end
792
+
793
+ sig do
794
+ override.returns(
795
+ {
796
+ card_number: String,
797
+ cvc: String,
798
+ expiry: String,
799
+ zip_code: String
800
+ }
801
+ )
802
+ end
803
+ def to_hash
804
+ end
805
+ end
806
+
257
807
  class WhatsappBusinessAccount < Sentdm::Internal::Type::BaseModel
258
808
  OrHash =
259
809
  T.type_alias do