sentdm 0.3.0 → 0.4.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 (217) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +18 -9
  4. data/lib/sentdm/client.rb +7 -0
  5. data/lib/sentdm/internal/util.rb +31 -0
  6. data/lib/sentdm/models/api_meta.rb +1 -9
  7. data/lib/sentdm/models/brand_data.rb +235 -198
  8. data/lib/sentdm/models/brand_with_kyc.rb +249 -214
  9. data/lib/sentdm/models/brands/api_response_tcr_campaign_with_use_cases.rb +0 -1
  10. data/lib/sentdm/models/contact_create_params.rb +13 -6
  11. data/lib/sentdm/models/contact_delete_params.rb +15 -1
  12. data/lib/sentdm/models/contact_list_params.rb +10 -2
  13. data/lib/sentdm/models/contact_retrieve_params.rb +13 -1
  14. data/lib/sentdm/models/contact_update_params.rb +20 -6
  15. data/lib/sentdm/models/me_retrieve_params.rb +7 -1
  16. data/lib/sentdm/models/me_retrieve_response.rb +152 -7
  17. data/lib/sentdm/models/message_retrieve_activities_params.rb +13 -1
  18. data/lib/sentdm/models/message_retrieve_activities_response.rb +19 -5
  19. data/lib/sentdm/models/message_retrieve_status_params.rb +13 -1
  20. data/lib/sentdm/models/message_retrieve_status_response.rb +8 -1
  21. data/lib/sentdm/models/message_send_params.rb +17 -10
  22. data/lib/sentdm/models/mutation_request.rb +6 -6
  23. data/lib/sentdm/models/profile_complete_params.rb +20 -6
  24. data/lib/sentdm/models/profile_create_params.rb +192 -10
  25. data/lib/sentdm/models/profile_delete_params.rb +21 -14
  26. data/lib/sentdm/models/profile_detail.rb +144 -95
  27. data/lib/sentdm/models/profile_list_params.rb +7 -1
  28. data/lib/sentdm/models/profile_retrieve_params.rb +13 -1
  29. data/lib/sentdm/models/profile_update_params.rb +146 -19
  30. data/lib/sentdm/models/template_create_params.rb +17 -10
  31. data/lib/sentdm/models/template_delete_params.rb +20 -6
  32. data/lib/sentdm/models/template_list_params.rb +18 -2
  33. data/lib/sentdm/models/template_retrieve_params.rb +13 -1
  34. data/lib/sentdm/models/template_update_params.rb +24 -10
  35. data/lib/sentdm/models/template_variable.rb +7 -1
  36. data/lib/sentdm/models/user_invite_params.rb +13 -6
  37. data/lib/sentdm/models/user_list_params.rb +7 -1
  38. data/lib/sentdm/models/user_remove_params.rb +20 -13
  39. data/lib/sentdm/models/user_retrieve_params.rb +13 -1
  40. data/lib/sentdm/models/user_update_role_params.rb +19 -13
  41. data/lib/sentdm/models/webhook_create_params.rb +13 -6
  42. data/lib/sentdm/models/webhook_delete_params.rb +13 -1
  43. data/lib/sentdm/models/webhook_list_event_types_params.rb +7 -1
  44. data/lib/sentdm/models/webhook_list_events_params.rb +13 -1
  45. data/lib/sentdm/models/webhook_list_params.rb +7 -1
  46. data/lib/sentdm/models/webhook_retrieve_params.rb +13 -1
  47. data/lib/sentdm/models/webhook_rotate_secret_params.rb +13 -1
  48. data/lib/sentdm/models/webhook_test_params.rb +20 -6
  49. data/lib/sentdm/models/webhook_toggle_status_params.rb +20 -6
  50. data/lib/sentdm/models/webhook_update_params.rb +20 -6
  51. data/lib/sentdm/models.rb +0 -12
  52. data/lib/sentdm/resources/brands/campaigns.rb +0 -128
  53. data/lib/sentdm/resources/brands.rb +0 -110
  54. data/lib/sentdm/resources/contacts.rb +44 -19
  55. data/lib/sentdm/resources/lookup.rb +0 -21
  56. data/lib/sentdm/resources/me.rb +25 -5
  57. data/lib/sentdm/resources/messages.rb +25 -8
  58. data/lib/sentdm/resources/profiles.rb +117 -32
  59. data/lib/sentdm/resources/templates.rb +48 -23
  60. data/lib/sentdm/resources/users.rb +41 -23
  61. data/lib/sentdm/resources/webhooks.rb +93 -32
  62. data/lib/sentdm/version.rb +1 -1
  63. data/lib/sentdm.rb +1 -14
  64. data/rbi/sentdm/client.rbi +7 -0
  65. data/rbi/sentdm/internal/util.rbi +20 -0
  66. data/rbi/sentdm/models/api_meta.rbi +4 -18
  67. data/rbi/sentdm/models/brand_data.rbi +326 -203
  68. data/rbi/sentdm/models/brand_with_kyc.rbi +334 -216
  69. data/rbi/sentdm/models/brands/tcr_campaign_with_use_cases.rbi +6 -8
  70. data/rbi/sentdm/models/contact_create_params.rbi +19 -10
  71. data/rbi/sentdm/models/contact_delete_params.rbi +15 -0
  72. data/rbi/sentdm/models/contact_list_params.rbi +11 -0
  73. data/rbi/sentdm/models/contact_retrieve_params.rbi +24 -5
  74. data/rbi/sentdm/models/contact_update_params.rbi +25 -10
  75. data/rbi/sentdm/models/me_retrieve_params.rbi +16 -5
  76. data/rbi/sentdm/models/me_retrieve_response.rbi +316 -16
  77. data/rbi/sentdm/models/message_retrieve_activities_params.rbi +24 -5
  78. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +18 -6
  79. data/rbi/sentdm/models/message_retrieve_status_params.rbi +24 -5
  80. data/rbi/sentdm/models/message_retrieve_status_response.rbi +6 -0
  81. data/rbi/sentdm/models/message_send_params.rbi +22 -13
  82. data/rbi/sentdm/models/mutation_request.rbi +10 -10
  83. data/rbi/sentdm/models/profile_complete_params.rbi +25 -10
  84. data/rbi/sentdm/models/profile_create_params.rbi +323 -15
  85. data/rbi/sentdm/models/profile_delete_params.rbi +38 -20
  86. data/rbi/sentdm/models/profile_detail.rbi +184 -128
  87. data/rbi/sentdm/models/profile_list_params.rbi +16 -5
  88. data/rbi/sentdm/models/profile_retrieve_params.rbi +24 -5
  89. data/rbi/sentdm/models/profile_update_params.rbi +233 -26
  90. data/rbi/sentdm/models/template_create_params.rbi +22 -13
  91. data/rbi/sentdm/models/template_delete_params.rbi +25 -10
  92. data/rbi/sentdm/models/template_list_params.rbi +19 -0
  93. data/rbi/sentdm/models/template_retrieve_params.rbi +24 -5
  94. data/rbi/sentdm/models/template_update_params.rbi +28 -13
  95. data/rbi/sentdm/models/template_variable.rbi +6 -0
  96. data/rbi/sentdm/models/user_invite_params.rbi +19 -10
  97. data/rbi/sentdm/models/user_list_params.rbi +16 -5
  98. data/rbi/sentdm/models/user_remove_params.rbi +37 -19
  99. data/rbi/sentdm/models/user_retrieve_params.rbi +24 -5
  100. data/rbi/sentdm/models/user_update_role_params.rbi +25 -21
  101. data/rbi/sentdm/models/webhook_create_params.rbi +19 -10
  102. data/rbi/sentdm/models/webhook_delete_params.rbi +24 -5
  103. data/rbi/sentdm/models/webhook_list_event_types_params.rbi +16 -5
  104. data/rbi/sentdm/models/webhook_list_events_params.rbi +21 -1
  105. data/rbi/sentdm/models/webhook_list_params.rbi +9 -0
  106. data/rbi/sentdm/models/webhook_retrieve_params.rbi +24 -5
  107. data/rbi/sentdm/models/webhook_rotate_secret_params.rbi +20 -1
  108. data/rbi/sentdm/models/webhook_test_params.rbi +25 -10
  109. data/rbi/sentdm/models/webhook_toggle_status_params.rbi +25 -10
  110. data/rbi/sentdm/models/webhook_update_params.rbi +25 -10
  111. data/rbi/sentdm/models.rbi +0 -12
  112. data/rbi/sentdm/resources/brands/campaigns.rbi +0 -94
  113. data/rbi/sentdm/resources/brands.rbi +0 -78
  114. data/rbi/sentdm/resources/contacts.rbi +38 -12
  115. data/rbi/sentdm/resources/lookup.rbi +0 -12
  116. data/rbi/sentdm/resources/me.rbi +26 -7
  117. data/rbi/sentdm/resources/messages.rbi +18 -4
  118. data/rbi/sentdm/resources/profiles.rbi +179 -38
  119. data/rbi/sentdm/resources/templates.rbi +48 -19
  120. data/rbi/sentdm/resources/users.rbi +48 -25
  121. data/rbi/sentdm/resources/webhooks.rbi +93 -20
  122. data/sig/sentdm/internal/util.rbs +10 -0
  123. data/sig/sentdm/models/api_meta.rbs +2 -16
  124. data/sig/sentdm/models/brand_data.rbs +188 -142
  125. data/sig/sentdm/models/brand_with_kyc.rbs +184 -133
  126. data/sig/sentdm/models/contact_create_params.rbs +16 -5
  127. data/sig/sentdm/models/contact_delete_params.rbs +15 -1
  128. data/sig/sentdm/models/contact_list_params.rbs +8 -1
  129. data/sig/sentdm/models/contact_retrieve_params.rbs +18 -3
  130. data/sig/sentdm/models/contact_update_params.rbs +18 -6
  131. data/sig/sentdm/models/me_retrieve_params.rbs +14 -3
  132. data/sig/sentdm/models/me_retrieve_response.rbs +134 -7
  133. data/sig/sentdm/models/message_retrieve_activities_params.rbs +18 -3
  134. data/sig/sentdm/models/message_retrieve_activities_response.rbs +9 -4
  135. data/sig/sentdm/models/message_retrieve_status_params.rbs +18 -3
  136. data/sig/sentdm/models/message_retrieve_status_response.rbs +5 -0
  137. data/sig/sentdm/models/message_send_params.rbs +15 -8
  138. data/sig/sentdm/models/mutation_request.rbs +5 -5
  139. data/sig/sentdm/models/profile_complete_params.rbs +21 -5
  140. data/sig/sentdm/models/profile_create_params.rbs +111 -7
  141. data/sig/sentdm/models/profile_delete_params.rbs +23 -9
  142. data/sig/sentdm/models/profile_detail.rbs +105 -84
  143. data/sig/sentdm/models/profile_list_params.rbs +14 -3
  144. data/sig/sentdm/models/profile_retrieve_params.rbs +18 -3
  145. data/sig/sentdm/models/profile_update_params.rbs +87 -13
  146. data/sig/sentdm/models/template_create_params.rbs +15 -8
  147. data/sig/sentdm/models/template_delete_params.rbs +20 -5
  148. data/sig/sentdm/models/template_list_params.rbs +13 -1
  149. data/sig/sentdm/models/template_retrieve_params.rbs +18 -3
  150. data/sig/sentdm/models/template_update_params.rbs +20 -8
  151. data/sig/sentdm/models/template_variable.rbs +5 -0
  152. data/sig/sentdm/models/user_invite_params.rbs +13 -6
  153. data/sig/sentdm/models/user_list_params.rbs +14 -3
  154. data/sig/sentdm/models/user_remove_params.rbs +23 -9
  155. data/sig/sentdm/models/user_retrieve_params.rbs +18 -3
  156. data/sig/sentdm/models/user_update_role_params.rbs +18 -13
  157. data/sig/sentdm/models/webhook_create_params.rbs +13 -6
  158. data/sig/sentdm/models/webhook_delete_params.rbs +18 -3
  159. data/sig/sentdm/models/webhook_list_event_types_params.rbs +13 -3
  160. data/sig/sentdm/models/webhook_list_events_params.rbs +17 -1
  161. data/sig/sentdm/models/webhook_list_params.rbs +13 -1
  162. data/sig/sentdm/models/webhook_retrieve_params.rbs +18 -3
  163. data/sig/sentdm/models/webhook_rotate_secret_params.rbs +16 -1
  164. data/sig/sentdm/models/webhook_test_params.rbs +21 -5
  165. data/sig/sentdm/models/webhook_toggle_status_params.rbs +21 -5
  166. data/sig/sentdm/models/webhook_update_params.rbs +18 -6
  167. data/sig/sentdm/models.rbs +0 -12
  168. data/sig/sentdm/resources/brands/campaigns.rbs +0 -29
  169. data/sig/sentdm/resources/brands.rbs +0 -25
  170. data/sig/sentdm/resources/contacts.rbs +7 -2
  171. data/sig/sentdm/resources/lookup.rbs +0 -5
  172. data/sig/sentdm/resources/me.rbs +1 -0
  173. data/sig/sentdm/resources/messages.rbs +4 -1
  174. data/sig/sentdm/resources/profiles.rbs +19 -8
  175. data/sig/sentdm/resources/templates.rbs +9 -3
  176. data/sig/sentdm/resources/users.rbs +10 -7
  177. data/sig/sentdm/resources/webhooks.rbs +18 -5
  178. metadata +2 -41
  179. data/lib/sentdm/models/api_response_brand_with_kyc.rb +0 -43
  180. data/lib/sentdm/models/brand_create_params.rb +0 -41
  181. data/lib/sentdm/models/brand_delete_params.rb +0 -27
  182. data/lib/sentdm/models/brand_list_params.rb +0 -14
  183. data/lib/sentdm/models/brand_list_response.rb +0 -43
  184. data/lib/sentdm/models/brand_update_params.rb +0 -41
  185. data/lib/sentdm/models/brands/campaign_create_params.rb +0 -43
  186. data/lib/sentdm/models/brands/campaign_delete_params.rb +0 -36
  187. data/lib/sentdm/models/brands/campaign_list_params.rb +0 -16
  188. data/lib/sentdm/models/brands/campaign_list_response.rb +0 -47
  189. data/lib/sentdm/models/brands/campaign_update_params.rb +0 -50
  190. data/lib/sentdm/models/lookup_retrieve_phone_info_params.rb +0 -14
  191. data/lib/sentdm/models/lookup_retrieve_phone_info_response.rb +0 -104
  192. data/rbi/sentdm/models/api_response_brand_with_kyc.rbi +0 -74
  193. data/rbi/sentdm/models/brand_create_params.rbi +0 -68
  194. data/rbi/sentdm/models/brand_delete_params.rbi +0 -62
  195. data/rbi/sentdm/models/brand_list_params.rbi +0 -27
  196. data/rbi/sentdm/models/brand_list_response.rbi +0 -71
  197. data/rbi/sentdm/models/brand_update_params.rbi +0 -68
  198. data/rbi/sentdm/models/brands/campaign_create_params.rbi +0 -73
  199. data/rbi/sentdm/models/brands/campaign_delete_params.rbi +0 -78
  200. data/rbi/sentdm/models/brands/campaign_list_params.rbi +0 -29
  201. data/rbi/sentdm/models/brands/campaign_list_response.rbi +0 -82
  202. data/rbi/sentdm/models/brands/campaign_update_params.rbi +0 -79
  203. data/rbi/sentdm/models/lookup_retrieve_phone_info_params.rbi +0 -30
  204. data/rbi/sentdm/models/lookup_retrieve_phone_info_response.rbi +0 -183
  205. data/sig/sentdm/models/api_response_brand_with_kyc.rbs +0 -39
  206. data/sig/sentdm/models/brand_create_params.rbs +0 -36
  207. data/sig/sentdm/models/brand_delete_params.rbs +0 -32
  208. data/sig/sentdm/models/brand_list_params.rbs +0 -14
  209. data/sig/sentdm/models/brand_list_response.rbs +0 -39
  210. data/sig/sentdm/models/brand_update_params.rbs +0 -36
  211. data/sig/sentdm/models/brands/campaign_create_params.rbs +0 -42
  212. data/sig/sentdm/models/brands/campaign_delete_params.rbs +0 -38
  213. data/sig/sentdm/models/brands/campaign_list_params.rbs +0 -17
  214. data/sig/sentdm/models/brands/campaign_list_response.rbs +0 -41
  215. data/sig/sentdm/models/brands/campaign_update_params.rbs +0 -47
  216. data/sig/sentdm/models/lookup_retrieve_phone_info_params.rbs +0 -15
  217. data/sig/sentdm/models/lookup_retrieve_phone_info_response.rbs +0 -102
@@ -6,259 +6,382 @@ module Sentdm
6
6
  OrHash =
7
7
  T.type_alias { T.any(Sentdm::BrandData, Sentdm::Internal::AnyHash) }
8
8
 
9
- # Brand relationship level with TCR (required for TCR)
10
- sig { returns(Sentdm::TcrBrandRelationship::OrSymbol) }
11
- attr_accessor :brand_relationship
9
+ # Compliance and TCR-related information
10
+ sig { returns(Sentdm::BrandData::Compliance) }
11
+ attr_reader :compliance
12
12
 
13
- # Primary contact name (required)
14
- sig { returns(String) }
15
- attr_accessor :contact_name
13
+ sig { params(compliance: Sentdm::BrandData::Compliance::OrHash).void }
14
+ attr_writer :compliance
16
15
 
17
- # Business vertical/industry category (required for TCR)
18
- sig { returns(Sentdm::TcrVertical::OrSymbol) }
19
- attr_accessor :vertical
16
+ # Contact information for the brand
17
+ sig { returns(Sentdm::BrandData::Contact) }
18
+ attr_reader :contact
20
19
 
21
- # Brand name for KYC submission
22
- sig { returns(T.nilable(String)) }
23
- attr_accessor :brand_name
20
+ sig { params(contact: Sentdm::BrandData::Contact::OrHash).void }
21
+ attr_writer :contact
24
22
 
25
- # Legal business name
26
- sig { returns(T.nilable(String)) }
27
- attr_accessor :business_legal_name
23
+ # Business details and address information
24
+ sig { returns(T.nilable(Sentdm::BrandData::Business)) }
25
+ attr_reader :business
28
26
 
29
- # Business/brand name
30
- sig { returns(T.nilable(String)) }
31
- attr_accessor :business_name
27
+ sig do
28
+ params(business: T.nilable(Sentdm::BrandData::Business::OrHash)).void
29
+ end
30
+ attr_writer :business
32
31
 
33
- # Contact's role in the business
34
- sig { returns(T.nilable(String)) }
35
- attr_accessor :business_role
32
+ # Brand and KYC data grouped into contact, business, and compliance sections
33
+ sig do
34
+ params(
35
+ compliance: Sentdm::BrandData::Compliance::OrHash,
36
+ contact: Sentdm::BrandData::Contact::OrHash,
37
+ business: T.nilable(Sentdm::BrandData::Business::OrHash)
38
+ ).returns(T.attached_class)
39
+ end
40
+ def self.new(
41
+ # Compliance and TCR-related information
42
+ compliance:,
43
+ # Contact information for the brand
44
+ contact:,
45
+ # Business details and address information
46
+ business: nil
47
+ )
48
+ end
49
+
50
+ sig do
51
+ override.returns(
52
+ {
53
+ compliance: Sentdm::BrandData::Compliance,
54
+ contact: Sentdm::BrandData::Contact,
55
+ business: T.nilable(Sentdm::BrandData::Business)
56
+ }
57
+ )
58
+ end
59
+ def to_hash
60
+ end
36
61
 
37
- # Business website URL
38
- sig { returns(T.nilable(String)) }
39
- attr_accessor :business_url
62
+ class Compliance < Sentdm::Internal::Type::BaseModel
63
+ OrHash =
64
+ T.type_alias do
65
+ T.any(Sentdm::BrandData::Compliance, Sentdm::Internal::AnyHash)
66
+ end
40
67
 
41
- # City
42
- sig { returns(T.nilable(String)) }
43
- attr_accessor :city
68
+ # Brand relationship level with TCR (required for TCR)
69
+ sig { returns(Sentdm::TcrBrandRelationship::OrSymbol) }
70
+ attr_accessor :brand_relationship
44
71
 
45
- # Contact email address
46
- sig { returns(T.nilable(String)) }
47
- attr_accessor :contact_email
72
+ # Business vertical/industry category (required for TCR)
73
+ sig { returns(Sentdm::TcrVertical::OrSymbol) }
74
+ attr_accessor :vertical
48
75
 
49
- # Contact phone number in E.164 format
50
- sig { returns(T.nilable(String)) }
51
- attr_accessor :contact_phone
76
+ # List of destination countries for messaging
77
+ sig { returns(T.nilable(T::Array[Sentdm::DestinationCountry])) }
78
+ attr_accessor :destination_countries
52
79
 
53
- # Contact phone country code (e.g., "1" for US)
54
- sig { returns(T.nilable(String)) }
55
- attr_accessor :contact_phone_country_code
80
+ # Expected daily messaging volume
81
+ sig { returns(T.nilable(String)) }
82
+ attr_accessor :expected_messaging_volume
56
83
 
57
- # Country code (e.g., US, CA)
58
- sig { returns(T.nilable(String)) }
59
- attr_accessor :country
84
+ # Whether this is a TCR (Campaign Registry) application
85
+ sig { returns(T.nilable(T::Boolean)) }
86
+ attr_accessor :is_tcr_application
60
87
 
61
- # Country where the business is registered
62
- sig { returns(T.nilable(String)) }
63
- attr_accessor :country_of_registration
88
+ # Additional notes about the business or use case
89
+ sig { returns(T.nilable(String)) }
90
+ attr_accessor :notes
64
91
 
65
- # List of destination countries for messaging
66
- sig { returns(T.nilable(T::Array[Sentdm::DestinationCountry])) }
67
- attr_accessor :destination_countries
92
+ # Phone number prefix for messaging (e.g., "+1")
93
+ sig { returns(T.nilable(String)) }
94
+ attr_accessor :phone_number_prefix
68
95
 
69
- # Business entity type
70
- sig { returns(T.nilable(Sentdm::BrandData::EntityType::OrSymbol)) }
71
- attr_accessor :entity_type
96
+ # Primary messaging use case description
97
+ sig { returns(T.nilable(String)) }
98
+ attr_accessor :primary_use_case
72
99
 
73
- # Expected daily messaging volume
74
- sig { returns(T.nilable(String)) }
75
- attr_accessor :expected_messaging_volume
100
+ # Compliance and TCR-related information
101
+ sig do
102
+ params(
103
+ brand_relationship: Sentdm::TcrBrandRelationship::OrSymbol,
104
+ vertical: Sentdm::TcrVertical::OrSymbol,
105
+ destination_countries:
106
+ T.nilable(T::Array[Sentdm::DestinationCountry::OrHash]),
107
+ expected_messaging_volume: T.nilable(String),
108
+ is_tcr_application: T.nilable(T::Boolean),
109
+ notes: T.nilable(String),
110
+ phone_number_prefix: T.nilable(String),
111
+ primary_use_case: T.nilable(String)
112
+ ).returns(T.attached_class)
113
+ end
114
+ def self.new(
115
+ # Brand relationship level with TCR (required for TCR)
116
+ brand_relationship:,
117
+ # Business vertical/industry category (required for TCR)
118
+ vertical:,
119
+ # List of destination countries for messaging
120
+ destination_countries: nil,
121
+ # Expected daily messaging volume
122
+ expected_messaging_volume: nil,
123
+ # Whether this is a TCR (Campaign Registry) application
124
+ is_tcr_application: nil,
125
+ # Additional notes about the business or use case
126
+ notes: nil,
127
+ # Phone number prefix for messaging (e.g., "+1")
128
+ phone_number_prefix: nil,
129
+ # Primary messaging use case description
130
+ primary_use_case: nil
131
+ )
132
+ end
76
133
 
77
- # Whether this is a TCR (Campaign Registry) application
78
- sig { returns(T.nilable(T::Boolean)) }
79
- attr_accessor :is_tcr_application
134
+ sig do
135
+ override.returns(
136
+ {
137
+ brand_relationship: Sentdm::TcrBrandRelationship::OrSymbol,
138
+ vertical: Sentdm::TcrVertical::OrSymbol,
139
+ destination_countries:
140
+ T.nilable(T::Array[Sentdm::DestinationCountry]),
141
+ expected_messaging_volume: T.nilable(String),
142
+ is_tcr_application: T.nilable(T::Boolean),
143
+ notes: T.nilable(String),
144
+ phone_number_prefix: T.nilable(String),
145
+ primary_use_case: T.nilable(String)
146
+ }
147
+ )
148
+ end
149
+ def to_hash
150
+ end
151
+ end
80
152
 
81
- # Additional notes about the business or use case
82
- sig { returns(T.nilable(String)) }
83
- attr_accessor :notes
153
+ class Contact < Sentdm::Internal::Type::BaseModel
154
+ OrHash =
155
+ T.type_alias do
156
+ T.any(Sentdm::BrandData::Contact, Sentdm::Internal::AnyHash)
157
+ end
84
158
 
85
- # Phone number prefix for messaging (e.g., "+1")
86
- sig { returns(T.nilable(String)) }
87
- attr_accessor :phone_number_prefix
159
+ # Primary contact name (required)
160
+ sig { returns(String) }
161
+ attr_accessor :name
88
162
 
89
- # Postal/ZIP code
90
- sig { returns(T.nilable(String)) }
91
- attr_accessor :postal_code
163
+ # Business/brand name
164
+ sig { returns(T.nilable(String)) }
165
+ attr_accessor :business_name
92
166
 
93
- # Primary messaging use case description
94
- sig { returns(T.nilable(String)) }
95
- attr_accessor :primary_use_case
167
+ # Contact email address
168
+ sig { returns(T.nilable(String)) }
169
+ attr_accessor :email
96
170
 
97
- # State/province code
98
- sig { returns(T.nilable(String)) }
99
- attr_accessor :state
171
+ # Contact phone number in E.164 format
172
+ sig { returns(T.nilable(String)) }
173
+ attr_accessor :phone
100
174
 
101
- # Street address
102
- sig { returns(T.nilable(String)) }
103
- attr_accessor :street
175
+ # Contact phone country code (e.g., "1" for US)
176
+ sig { returns(T.nilable(String)) }
177
+ attr_accessor :phone_country_code
104
178
 
105
- # Tax ID/EIN number
106
- sig { returns(T.nilable(String)) }
107
- attr_accessor :tax_id
179
+ # Contact's role in the business
180
+ sig { returns(T.nilable(String)) }
181
+ attr_accessor :role
108
182
 
109
- # Type of tax ID (e.g., us_ein, ca_bn)
110
- sig { returns(T.nilable(String)) }
111
- attr_accessor :tax_id_type
183
+ # Contact information for the brand
184
+ sig do
185
+ params(
186
+ name: String,
187
+ business_name: T.nilable(String),
188
+ email: T.nilable(String),
189
+ phone: T.nilable(String),
190
+ phone_country_code: T.nilable(String),
191
+ role: T.nilable(String)
192
+ ).returns(T.attached_class)
193
+ end
194
+ def self.new(
195
+ # Primary contact name (required)
196
+ name:,
197
+ # Business/brand name
198
+ business_name: nil,
199
+ # Contact email address
200
+ email: nil,
201
+ # Contact phone number in E.164 format
202
+ phone: nil,
203
+ # Contact phone country code (e.g., "1" for US)
204
+ phone_country_code: nil,
205
+ # Contact's role in the business
206
+ role: nil
207
+ )
208
+ end
112
209
 
113
- # Brand and KYC data
114
- sig do
115
- params(
116
- brand_relationship: Sentdm::TcrBrandRelationship::OrSymbol,
117
- contact_name: String,
118
- vertical: Sentdm::TcrVertical::OrSymbol,
119
- brand_name: T.nilable(String),
120
- business_legal_name: T.nilable(String),
121
- business_name: T.nilable(String),
122
- business_role: T.nilable(String),
123
- business_url: T.nilable(String),
124
- city: T.nilable(String),
125
- contact_email: T.nilable(String),
126
- contact_phone: T.nilable(String),
127
- contact_phone_country_code: T.nilable(String),
128
- country: T.nilable(String),
129
- country_of_registration: T.nilable(String),
130
- destination_countries:
131
- T.nilable(T::Array[Sentdm::DestinationCountry::OrHash]),
132
- entity_type: T.nilable(Sentdm::BrandData::EntityType::OrSymbol),
133
- expected_messaging_volume: T.nilable(String),
134
- is_tcr_application: T.nilable(T::Boolean),
135
- notes: T.nilable(String),
136
- phone_number_prefix: T.nilable(String),
137
- postal_code: T.nilable(String),
138
- primary_use_case: T.nilable(String),
139
- state: T.nilable(String),
140
- street: T.nilable(String),
141
- tax_id: T.nilable(String),
142
- tax_id_type: T.nilable(String)
143
- ).returns(T.attached_class)
210
+ sig do
211
+ override.returns(
212
+ {
213
+ name: String,
214
+ business_name: T.nilable(String),
215
+ email: T.nilable(String),
216
+ phone: T.nilable(String),
217
+ phone_country_code: T.nilable(String),
218
+ role: T.nilable(String)
219
+ }
220
+ )
221
+ end
222
+ def to_hash
223
+ end
144
224
  end
145
- def self.new(
146
- # Brand relationship level with TCR (required for TCR)
147
- brand_relationship:,
148
- # Primary contact name (required)
149
- contact_name:,
150
- # Business vertical/industry category (required for TCR)
151
- vertical:,
152
- # Brand name for KYC submission
153
- brand_name: nil,
154
- # Legal business name
155
- business_legal_name: nil,
156
- # Business/brand name
157
- business_name: nil,
158
- # Contact's role in the business
159
- business_role: nil,
160
- # Business website URL
161
- business_url: nil,
225
+
226
+ class Business < Sentdm::Internal::Type::BaseModel
227
+ OrHash =
228
+ T.type_alias do
229
+ T.any(Sentdm::BrandData::Business, Sentdm::Internal::AnyHash)
230
+ end
231
+
162
232
  # City
163
- city: nil,
164
- # Contact email address
165
- contact_email: nil,
166
- # Contact phone number in E.164 format
167
- contact_phone: nil,
168
- # Contact phone country code (e.g., "1" for US)
169
- contact_phone_country_code: nil,
233
+ sig { returns(T.nilable(String)) }
234
+ attr_accessor :city
235
+
170
236
  # Country code (e.g., US, CA)
171
- country: nil,
237
+ sig { returns(T.nilable(String)) }
238
+ attr_accessor :country
239
+
172
240
  # Country where the business is registered
173
- country_of_registration: nil,
174
- # List of destination countries for messaging
175
- destination_countries: nil,
241
+ sig { returns(T.nilable(String)) }
242
+ attr_accessor :country_of_registration
243
+
176
244
  # Business entity type
177
- entity_type: nil,
178
- # Expected daily messaging volume
179
- expected_messaging_volume: nil,
180
- # Whether this is a TCR (Campaign Registry) application
181
- is_tcr_application: nil,
182
- # Additional notes about the business or use case
183
- notes: nil,
184
- # Phone number prefix for messaging (e.g., "+1")
185
- phone_number_prefix: nil,
245
+ sig do
246
+ returns(T.nilable(Sentdm::BrandData::Business::EntityType::OrSymbol))
247
+ end
248
+ attr_accessor :entity_type
249
+
250
+ # Legal business name
251
+ sig { returns(T.nilable(String)) }
252
+ attr_accessor :legal_name
253
+
186
254
  # Postal/ZIP code
187
- postal_code: nil,
188
- # Primary messaging use case description
189
- primary_use_case: nil,
255
+ sig { returns(T.nilable(String)) }
256
+ attr_accessor :postal_code
257
+
190
258
  # State/province code
191
- state: nil,
259
+ sig { returns(T.nilable(String)) }
260
+ attr_accessor :state
261
+
192
262
  # Street address
193
- street: nil,
263
+ sig { returns(T.nilable(String)) }
264
+ attr_accessor :street
265
+
194
266
  # Tax ID/EIN number
195
- tax_id: nil,
267
+ sig { returns(T.nilable(String)) }
268
+ attr_accessor :tax_id
269
+
196
270
  # Type of tax ID (e.g., us_ein, ca_bn)
197
- tax_id_type: nil
198
- )
199
- end
271
+ sig { returns(T.nilable(String)) }
272
+ attr_accessor :tax_id_type
200
273
 
201
- sig do
202
- override.returns(
203
- {
204
- brand_relationship: Sentdm::TcrBrandRelationship::OrSymbol,
205
- contact_name: String,
206
- vertical: Sentdm::TcrVertical::OrSymbol,
207
- brand_name: T.nilable(String),
208
- business_legal_name: T.nilable(String),
209
- business_name: T.nilable(String),
210
- business_role: T.nilable(String),
211
- business_url: T.nilable(String),
274
+ # Business website URL
275
+ sig { returns(T.nilable(String)) }
276
+ attr_accessor :url
277
+
278
+ # Business details and address information
279
+ sig do
280
+ params(
212
281
  city: T.nilable(String),
213
- contact_email: T.nilable(String),
214
- contact_phone: T.nilable(String),
215
- contact_phone_country_code: T.nilable(String),
216
282
  country: T.nilable(String),
217
283
  country_of_registration: T.nilable(String),
218
- destination_countries:
219
- T.nilable(T::Array[Sentdm::DestinationCountry]),
220
- entity_type: T.nilable(Sentdm::BrandData::EntityType::OrSymbol),
221
- expected_messaging_volume: T.nilable(String),
222
- is_tcr_application: T.nilable(T::Boolean),
223
- notes: T.nilable(String),
224
- phone_number_prefix: T.nilable(String),
284
+ entity_type:
285
+ T.nilable(Sentdm::BrandData::Business::EntityType::OrSymbol),
286
+ legal_name: T.nilable(String),
225
287
  postal_code: T.nilable(String),
226
- primary_use_case: T.nilable(String),
227
288
  state: T.nilable(String),
228
289
  street: T.nilable(String),
229
290
  tax_id: T.nilable(String),
230
- tax_id_type: T.nilable(String)
231
- }
291
+ tax_id_type: T.nilable(String),
292
+ url: T.nilable(String)
293
+ ).returns(T.attached_class)
294
+ end
295
+ def self.new(
296
+ # City
297
+ city: nil,
298
+ # Country code (e.g., US, CA)
299
+ country: nil,
300
+ # Country where the business is registered
301
+ country_of_registration: nil,
302
+ # Business entity type
303
+ entity_type: nil,
304
+ # Legal business name
305
+ legal_name: nil,
306
+ # Postal/ZIP code
307
+ postal_code: nil,
308
+ # State/province code
309
+ state: nil,
310
+ # Street address
311
+ street: nil,
312
+ # Tax ID/EIN number
313
+ tax_id: nil,
314
+ # Type of tax ID (e.g., us_ein, ca_bn)
315
+ tax_id_type: nil,
316
+ # Business website URL
317
+ url: nil
232
318
  )
233
- end
234
- def to_hash
235
- end
236
-
237
- # Business entity type
238
- module EntityType
239
- extend Sentdm::Internal::Type::Enum
240
-
241
- TaggedSymbol =
242
- T.type_alias { T.all(Symbol, Sentdm::BrandData::EntityType) }
243
- OrSymbol = T.type_alias { T.any(Symbol, String) }
244
-
245
- PRIVATE_PROFIT =
246
- T.let(:PRIVATE_PROFIT, Sentdm::BrandData::EntityType::TaggedSymbol)
247
- PUBLIC_PROFIT =
248
- T.let(:PUBLIC_PROFIT, Sentdm::BrandData::EntityType::TaggedSymbol)
249
- NON_PROFIT =
250
- T.let(:NON_PROFIT, Sentdm::BrandData::EntityType::TaggedSymbol)
251
- SOLE_PROPRIETOR =
252
- T.let(:SOLE_PROPRIETOR, Sentdm::BrandData::EntityType::TaggedSymbol)
253
- GOVERNMENT =
254
- T.let(:GOVERNMENT, Sentdm::BrandData::EntityType::TaggedSymbol)
319
+ end
255
320
 
256
321
  sig do
257
322
  override.returns(
258
- T::Array[Sentdm::BrandData::EntityType::TaggedSymbol]
323
+ {
324
+ city: T.nilable(String),
325
+ country: T.nilable(String),
326
+ country_of_registration: T.nilable(String),
327
+ entity_type:
328
+ T.nilable(Sentdm::BrandData::Business::EntityType::OrSymbol),
329
+ legal_name: T.nilable(String),
330
+ postal_code: T.nilable(String),
331
+ state: T.nilable(String),
332
+ street: T.nilable(String),
333
+ tax_id: T.nilable(String),
334
+ tax_id_type: T.nilable(String),
335
+ url: T.nilable(String)
336
+ }
259
337
  )
260
338
  end
261
- def self.values
339
+ def to_hash
340
+ end
341
+
342
+ # Business entity type
343
+ module EntityType
344
+ extend Sentdm::Internal::Type::Enum
345
+
346
+ TaggedSymbol =
347
+ T.type_alias do
348
+ T.all(Symbol, Sentdm::BrandData::Business::EntityType)
349
+ end
350
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
351
+
352
+ PRIVATE_PROFIT =
353
+ T.let(
354
+ :PRIVATE_PROFIT,
355
+ Sentdm::BrandData::Business::EntityType::TaggedSymbol
356
+ )
357
+ PUBLIC_PROFIT =
358
+ T.let(
359
+ :PUBLIC_PROFIT,
360
+ Sentdm::BrandData::Business::EntityType::TaggedSymbol
361
+ )
362
+ NON_PROFIT =
363
+ T.let(
364
+ :NON_PROFIT,
365
+ Sentdm::BrandData::Business::EntityType::TaggedSymbol
366
+ )
367
+ SOLE_PROPRIETOR =
368
+ T.let(
369
+ :SOLE_PROPRIETOR,
370
+ Sentdm::BrandData::Business::EntityType::TaggedSymbol
371
+ )
372
+ GOVERNMENT =
373
+ T.let(
374
+ :GOVERNMENT,
375
+ Sentdm::BrandData::Business::EntityType::TaggedSymbol
376
+ )
377
+
378
+ sig do
379
+ override.returns(
380
+ T::Array[Sentdm::BrandData::Business::EntityType::TaggedSymbol]
381
+ )
382
+ end
383
+ def self.values
384
+ end
262
385
  end
263
386
  end
264
387
  end