sentdm 0.47.0 → 0.48.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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +1 -1
  4. data/lib/sentdm/models/channels/sms/api_response_of_supplied_compliance.rb +67 -0
  5. data/lib/sentdm/models/channels/sms/ten_dlc_add_campaign_params.rb +161 -0
  6. data/lib/sentdm/models/channels/sms/ten_dlc_add_numbers_params.rb +65 -0
  7. data/lib/sentdm/models/channels/sms/ten_dlc_campaign_use_case.rb +56 -0
  8. data/lib/sentdm/models/channels/sms/ten_dlc_retrieve_compliance_params.rb +24 -0
  9. data/lib/sentdm/models/channels/sms/ten_dlc_update_campaign_params.rb +168 -0
  10. data/lib/sentdm/resources/channels/sms/ten_dlc.rb +310 -0
  11. data/lib/sentdm/resources/channels/sms.rb +31 -0
  12. data/lib/sentdm/version.rb +1 -1
  13. data/lib/sentdm.rb +7 -0
  14. data/rbi/sentdm/models/channels/sms/api_response_of_supplied_compliance.rbi +117 -0
  15. data/rbi/sentdm/models/channels/sms/ten_dlc_add_campaign_params.rbi +255 -0
  16. data/rbi/sentdm/models/channels/sms/ten_dlc_add_numbers_params.rbi +100 -0
  17. data/rbi/sentdm/models/channels/sms/ten_dlc_campaign_use_case.rbi +143 -0
  18. data/rbi/sentdm/models/channels/sms/ten_dlc_retrieve_compliance_params.rbi +45 -0
  19. data/rbi/sentdm/models/channels/sms/ten_dlc_update_campaign_params.rbi +264 -0
  20. data/rbi/sentdm/resources/channels/sms/ten_dlc.rbi +358 -0
  21. data/rbi/sentdm/resources/channels/sms.rbi +30 -0
  22. data/sig/sentdm/models/channels/sms/api_response_of_supplied_compliance.rbs +43 -0
  23. data/sig/sentdm/models/channels/sms/ten_dlc_add_campaign_params.rbs +130 -0
  24. data/sig/sentdm/models/channels/sms/ten_dlc_add_numbers_params.rbs +54 -0
  25. data/sig/sentdm/models/channels/sms/ten_dlc_campaign_use_case.rbs +60 -0
  26. data/sig/sentdm/models/channels/sms/ten_dlc_retrieve_compliance_params.rbs +29 -0
  27. data/sig/sentdm/models/channels/sms/ten_dlc_update_campaign_params.rbs +137 -0
  28. data/sig/sentdm/resources/channels/sms/ten_dlc.rbs +64 -0
  29. data/sig/sentdm/resources/channels/sms.rbs +2 -0
  30. metadata +22 -1
@@ -0,0 +1,255 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Channels
6
+ module SMS
7
+ class TenDlcAddCampaignParams < Sentdm::Internal::Type::BaseModel
8
+ extend Sentdm::Internal::Type::RequestParameters::Converter
9
+ include Sentdm::Internal::Type::RequestParameters
10
+
11
+ OrHash =
12
+ T.type_alias do
13
+ T.any(
14
+ Sentdm::Channels::SMS::TenDlcAddCampaignParams,
15
+ Sentdm::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ sig { returns(String) }
20
+ attr_accessor :idempotency_key
21
+
22
+ # What this programme sends. TCR description: what recipients will get and why, in
23
+ # a sentence. The only one of these TCR takes verbatim as a description of the
24
+ # programme, which is why it is asked for rather than derived from the customer's
25
+ # name. Required when `compliance.campaign.inherit != true`.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_reader :description
28
+
29
+ sig { params(description: String).void }
30
+ attr_writer :description
31
+
32
+ # Help keywords. TCR helpKeywords, comma separated, e.g. HELP,INFO. Required when
33
+ # `compliance.campaign.inherit != true`.
34
+ sig { returns(T.nilable(String)) }
35
+ attr_reader :help_keywords
36
+
37
+ sig { params(help_keywords: String).void }
38
+ attr_writer :help_keywords
39
+
40
+ # Help reply. TCR helpMessage. Its presence is what sets subscriberHelp. Required
41
+ # when `compliance.campaign.inherit != true`.
42
+ sig { returns(T.nilable(String)) }
43
+ attr_reader :help_message
44
+
45
+ sig { params(help_message: String).void }
46
+ attr_writer :help_message
47
+
48
+ # Consent narrative. TCR messageFlow: how recipients opt in, in prose. Under 40
49
+ # characters is refused, and carriers reject vague descriptions — say where opt-in
50
+ # happens, that the box is unchecked by default, and that consent is not a
51
+ # condition of purchase. Required when `compliance.campaign.inherit != true`.
52
+ sig { returns(T.nilable(String)) }
53
+ attr_reader :message_flow
54
+
55
+ sig { params(message_flow: String).void }
56
+ attr_writer :message_flow
57
+
58
+ # Opt-in keywords. TCR optinKeywords, comma separated, e.g. START,YES. Required
59
+ # when `compliance.campaign.inherit != true`.
60
+ sig { returns(T.nilable(String)) }
61
+ attr_reader :opt_in_keywords
62
+
63
+ sig { params(opt_in_keywords: String).void }
64
+ attr_writer :opt_in_keywords
65
+
66
+ # Opt-in confirmation. TCR optinMessage. Should state message frequency and that
67
+ # rates may apply. Its presence is what sets subscriberOptin. Required when
68
+ # `compliance.campaign.inherit != true`.
69
+ sig { returns(T.nilable(String)) }
70
+ attr_reader :opt_in_message
71
+
72
+ sig { params(opt_in_message: String).void }
73
+ attr_writer :opt_in_message
74
+
75
+ # Opt-out keywords. TCR optoutKeywords, comma separated. STOP, END, CANCEL,
76
+ # UNSUBSCRIBE and QUIT are honoured regardless of what is declared. Required when
77
+ # `compliance.campaign.inherit != true`.
78
+ sig { returns(T.nilable(String)) }
79
+ attr_reader :opt_out_keywords
80
+
81
+ sig { params(opt_out_keywords: String).void }
82
+ attr_writer :opt_out_keywords
83
+
84
+ # Opt-out confirmation. TCR optoutMessage. Its presence is what sets
85
+ # subscriberOptout. Required when `compliance.campaign.inherit != true`.
86
+ sig { returns(T.nilable(String)) }
87
+ attr_reader :opt_out_message
88
+
89
+ sig { params(opt_out_message: String).void }
90
+ attr_writer :opt_out_message
91
+
92
+ # Privacy policy URL. TCR privacyPolicyLink. Required when
93
+ # `compliance.campaign.inherit != true`.
94
+ sig { returns(T.nilable(String)) }
95
+ attr_reader :privacy_policy_link
96
+
97
+ sig { params(privacy_policy_link: String).void }
98
+ attr_writer :privacy_policy_link
99
+
100
+ # Sandbox flag - when true, the operation is simulated without side effects Useful
101
+ # for testing integrations without actual execution
102
+ sig { returns(T.nilable(T::Boolean)) }
103
+ attr_reader :sandbox
104
+
105
+ sig { params(sandbox: T::Boolean).void }
106
+ attr_writer :sandbox
107
+
108
+ # Terms and conditions URL. TCR termsAndConditionsLink. Required when
109
+ # `compliance.campaign.inherit != true`.
110
+ sig { returns(T.nilable(String)) }
111
+ attr_reader :terms_and_conditions_link
112
+
113
+ sig { params(terms_and_conditions_link: String).void }
114
+ attr_writer :terms_and_conditions_link
115
+
116
+ # Use cases. What the campaign sends, and an example of each. One to five entries;
117
+ # how they register is decided by volume, never declared. Required when
118
+ # `compliance.campaign.inherit != true`.
119
+ sig do
120
+ returns(
121
+ T.nilable(T::Array[Sentdm::Channels::SMS::TenDlcCampaignUseCase])
122
+ )
123
+ end
124
+ attr_reader :use_cases
125
+
126
+ sig do
127
+ params(
128
+ use_cases:
129
+ T::Array[Sentdm::Channels::SMS::TenDlcCampaignUseCase::OrHash]
130
+ ).void
131
+ end
132
+ attr_writer :use_cases
133
+
134
+ # Expected monthly volume. Decides how the campaign registers and which fee tier
135
+ # applies: below the low-volume threshold it registers as LOW_VOLUME with
136
+ # sub-use-cases, above it as a single use case or MIXED. Omitting it registers the
137
+ # campaign at the higher-fee standard tier.
138
+ sig { returns(T.nilable(String)) }
139
+ attr_reader :volume
140
+
141
+ sig { params(volume: String).void }
142
+ attr_writer :volume
143
+
144
+ sig { returns(T.nilable(String)) }
145
+ attr_reader :x_profile_id
146
+
147
+ sig { params(x_profile_id: String).void }
148
+ attr_writer :x_profile_id
149
+
150
+ sig do
151
+ params(
152
+ idempotency_key: String,
153
+ description: String,
154
+ help_keywords: String,
155
+ help_message: String,
156
+ message_flow: String,
157
+ opt_in_keywords: String,
158
+ opt_in_message: String,
159
+ opt_out_keywords: String,
160
+ opt_out_message: String,
161
+ privacy_policy_link: String,
162
+ sandbox: T::Boolean,
163
+ terms_and_conditions_link: String,
164
+ use_cases:
165
+ T::Array[Sentdm::Channels::SMS::TenDlcCampaignUseCase::OrHash],
166
+ volume: String,
167
+ x_profile_id: String,
168
+ request_options: Sentdm::RequestOptions::OrHash
169
+ ).returns(T.attached_class)
170
+ end
171
+ def self.new(
172
+ idempotency_key:,
173
+ # What this programme sends. TCR description: what recipients will get and why, in
174
+ # a sentence. The only one of these TCR takes verbatim as a description of the
175
+ # programme, which is why it is asked for rather than derived from the customer's
176
+ # name. Required when `compliance.campaign.inherit != true`.
177
+ description: nil,
178
+ # Help keywords. TCR helpKeywords, comma separated, e.g. HELP,INFO. Required when
179
+ # `compliance.campaign.inherit != true`.
180
+ help_keywords: nil,
181
+ # Help reply. TCR helpMessage. Its presence is what sets subscriberHelp. Required
182
+ # when `compliance.campaign.inherit != true`.
183
+ help_message: nil,
184
+ # Consent narrative. TCR messageFlow: how recipients opt in, in prose. Under 40
185
+ # characters is refused, and carriers reject vague descriptions — say where opt-in
186
+ # happens, that the box is unchecked by default, and that consent is not a
187
+ # condition of purchase. Required when `compliance.campaign.inherit != true`.
188
+ message_flow: nil,
189
+ # Opt-in keywords. TCR optinKeywords, comma separated, e.g. START,YES. Required
190
+ # when `compliance.campaign.inherit != true`.
191
+ opt_in_keywords: nil,
192
+ # Opt-in confirmation. TCR optinMessage. Should state message frequency and that
193
+ # rates may apply. Its presence is what sets subscriberOptin. Required when
194
+ # `compliance.campaign.inherit != true`.
195
+ opt_in_message: nil,
196
+ # Opt-out keywords. TCR optoutKeywords, comma separated. STOP, END, CANCEL,
197
+ # UNSUBSCRIBE and QUIT are honoured regardless of what is declared. Required when
198
+ # `compliance.campaign.inherit != true`.
199
+ opt_out_keywords: nil,
200
+ # Opt-out confirmation. TCR optoutMessage. Its presence is what sets
201
+ # subscriberOptout. Required when `compliance.campaign.inherit != true`.
202
+ opt_out_message: nil,
203
+ # Privacy policy URL. TCR privacyPolicyLink. Required when
204
+ # `compliance.campaign.inherit != true`.
205
+ privacy_policy_link: nil,
206
+ # Sandbox flag - when true, the operation is simulated without side effects Useful
207
+ # for testing integrations without actual execution
208
+ sandbox: nil,
209
+ # Terms and conditions URL. TCR termsAndConditionsLink. Required when
210
+ # `compliance.campaign.inherit != true`.
211
+ terms_and_conditions_link: nil,
212
+ # Use cases. What the campaign sends, and an example of each. One to five entries;
213
+ # how they register is decided by volume, never declared. Required when
214
+ # `compliance.campaign.inherit != true`.
215
+ use_cases: nil,
216
+ # Expected monthly volume. Decides how the campaign registers and which fee tier
217
+ # applies: below the low-volume threshold it registers as LOW_VOLUME with
218
+ # sub-use-cases, above it as a single use case or MIXED. Omitting it registers the
219
+ # campaign at the higher-fee standard tier.
220
+ volume: nil,
221
+ x_profile_id: nil,
222
+ request_options: {}
223
+ )
224
+ end
225
+
226
+ sig do
227
+ override.returns(
228
+ {
229
+ idempotency_key: String,
230
+ description: String,
231
+ help_keywords: String,
232
+ help_message: String,
233
+ message_flow: String,
234
+ opt_in_keywords: String,
235
+ opt_in_message: String,
236
+ opt_out_keywords: String,
237
+ opt_out_message: String,
238
+ privacy_policy_link: String,
239
+ sandbox: T::Boolean,
240
+ terms_and_conditions_link: String,
241
+ use_cases:
242
+ T::Array[Sentdm::Channels::SMS::TenDlcCampaignUseCase],
243
+ volume: String,
244
+ x_profile_id: String,
245
+ request_options: Sentdm::RequestOptions
246
+ }
247
+ )
248
+ end
249
+ def to_hash
250
+ end
251
+ end
252
+ end
253
+ end
254
+ end
255
+ end
@@ -0,0 +1,100 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Channels
6
+ module SMS
7
+ class TenDlcAddNumbersParams < Sentdm::Internal::Type::BaseModel
8
+ extend Sentdm::Internal::Type::RequestParameters::Converter
9
+ include Sentdm::Internal::Type::RequestParameters
10
+
11
+ OrHash =
12
+ T.type_alias do
13
+ T.any(
14
+ Sentdm::Channels::SMS::TenDlcAddNumbersParams,
15
+ Sentdm::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # The campaign to add the numbers to, as compliance.campaigns[].id reports it.
20
+ # Required.
21
+ sig { returns(String) }
22
+ attr_accessor :campaign_id
23
+
24
+ # The numbers to add, one entry per area code, e.g. [{"area_code": "415",
25
+ # "quantity": 2}, {"quantity": 1}]. quantity defaults to 1, and an entry without
26
+ # area_code means any area code. Required.
27
+ #
28
+ # Added to what the campaign already asks for, never replacing it.
29
+ sig do
30
+ returns(T::Array[T.nilable(Sentdm::Channels::SMSNumberRequest)])
31
+ end
32
+ attr_accessor :numbers
33
+
34
+ sig { returns(String) }
35
+ attr_accessor :idempotency_key
36
+
37
+ # Sandbox flag - when true, the operation is simulated without side effects Useful
38
+ # for testing integrations without actual execution
39
+ sig { returns(T.nilable(T::Boolean)) }
40
+ attr_reader :sandbox
41
+
42
+ sig { params(sandbox: T::Boolean).void }
43
+ attr_writer :sandbox
44
+
45
+ sig { returns(T.nilable(String)) }
46
+ attr_reader :x_profile_id
47
+
48
+ sig { params(x_profile_id: String).void }
49
+ attr_writer :x_profile_id
50
+
51
+ sig do
52
+ params(
53
+ campaign_id: String,
54
+ numbers:
55
+ T::Array[T.nilable(Sentdm::Channels::SMSNumberRequest::OrHash)],
56
+ idempotency_key: String,
57
+ sandbox: T::Boolean,
58
+ x_profile_id: String,
59
+ request_options: Sentdm::RequestOptions::OrHash
60
+ ).returns(T.attached_class)
61
+ end
62
+ def self.new(
63
+ # The campaign to add the numbers to, as compliance.campaigns[].id reports it.
64
+ # Required.
65
+ campaign_id:,
66
+ # The numbers to add, one entry per area code, e.g. [{"area_code": "415",
67
+ # "quantity": 2}, {"quantity": 1}]. quantity defaults to 1, and an entry without
68
+ # area_code means any area code. Required.
69
+ #
70
+ # Added to what the campaign already asks for, never replacing it.
71
+ numbers:,
72
+ idempotency_key:,
73
+ # Sandbox flag - when true, the operation is simulated without side effects Useful
74
+ # for testing integrations without actual execution
75
+ sandbox: nil,
76
+ x_profile_id: nil,
77
+ request_options: {}
78
+ )
79
+ end
80
+
81
+ sig do
82
+ override.returns(
83
+ {
84
+ campaign_id: String,
85
+ numbers:
86
+ T::Array[T.nilable(Sentdm::Channels::SMSNumberRequest)],
87
+ idempotency_key: String,
88
+ sandbox: T::Boolean,
89
+ x_profile_id: String,
90
+ request_options: Sentdm::RequestOptions
91
+ }
92
+ )
93
+ end
94
+ def to_hash
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,143 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Channels
6
+ module SMS
7
+ class TenDlcCampaignUseCase < Sentdm::Internal::Type::BaseModel
8
+ OrHash =
9
+ T.type_alias do
10
+ T.any(
11
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase,
12
+ Sentdm::Internal::AnyHash
13
+ )
14
+ end
15
+
16
+ # Sample messages. TCR sample1..sample5 for this use case. One to five, each
17
+ # carrying the brand name and an opt-out instruction.
18
+ sig { returns(T::Array[T.anything]) }
19
+ attr_accessor :sample_messages
20
+
21
+ # Use case. What this entry sends. MIXED and LOW_VOLUME are refused — volume
22
+ # decides those.
23
+ sig do
24
+ returns(
25
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::OrSymbol
26
+ )
27
+ end
28
+ attr_accessor :use_case
29
+
30
+ sig do
31
+ params(
32
+ sample_messages: T::Array[T.anything],
33
+ use_case:
34
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::OrSymbol
35
+ ).returns(T.attached_class)
36
+ end
37
+ def self.new(
38
+ # Sample messages. TCR sample1..sample5 for this use case. One to five, each
39
+ # carrying the brand name and an opt-out instruction.
40
+ sample_messages:,
41
+ # Use case. What this entry sends. MIXED and LOW_VOLUME are refused — volume
42
+ # decides those.
43
+ use_case:
44
+ )
45
+ end
46
+
47
+ sig do
48
+ override.returns(
49
+ {
50
+ sample_messages: T::Array[T.anything],
51
+ use_case:
52
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::OrSymbol
53
+ }
54
+ )
55
+ end
56
+ def to_hash
57
+ end
58
+
59
+ # Use case. What this entry sends. MIXED and LOW_VOLUME are refused — volume
60
+ # decides those.
61
+ module UseCase
62
+ extend Sentdm::Internal::Type::Enum
63
+
64
+ TaggedSymbol =
65
+ T.type_alias do
66
+ T.all(
67
+ Symbol,
68
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase
69
+ )
70
+ end
71
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
72
+
73
+ MARKETING =
74
+ T.let(
75
+ :MARKETING,
76
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
77
+ )
78
+ ACCOUNT_NOTIFICATION =
79
+ T.let(
80
+ :ACCOUNT_NOTIFICATION,
81
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
82
+ )
83
+ CUSTOMER_CARE =
84
+ T.let(
85
+ :CUSTOMER_CARE,
86
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
87
+ )
88
+ FRAUD_ALERT =
89
+ T.let(
90
+ :FRAUD_ALERT,
91
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
92
+ )
93
+ USE_CASE_2_FA =
94
+ T.let(
95
+ :"2FA",
96
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
97
+ )
98
+ DELIVERY_NOTIFICATION =
99
+ T.let(
100
+ :DELIVERY_NOTIFICATION,
101
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
102
+ )
103
+ SECURITY_ALERT =
104
+ T.let(
105
+ :SECURITY_ALERT,
106
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
107
+ )
108
+ M2_M =
109
+ T.let(
110
+ :M2M,
111
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
112
+ )
113
+ HIGHER_EDUCATION =
114
+ T.let(
115
+ :HIGHER_EDUCATION,
116
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
117
+ )
118
+ POLLING_VOTING =
119
+ T.let(
120
+ :POLLING_VOTING,
121
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
122
+ )
123
+ PUBLIC_SERVICE_ANNOUNCEMENT =
124
+ T.let(
125
+ :PUBLIC_SERVICE_ANNOUNCEMENT,
126
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
127
+ )
128
+
129
+ sig do
130
+ override.returns(
131
+ T::Array[
132
+ Sentdm::Channels::SMS::TenDlcCampaignUseCase::UseCase::TaggedSymbol
133
+ ]
134
+ )
135
+ end
136
+ def self.values
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,45 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Channels
6
+ module SMS
7
+ class TenDlcRetrieveComplianceParams < Sentdm::Internal::Type::BaseModel
8
+ extend Sentdm::Internal::Type::RequestParameters::Converter
9
+ include Sentdm::Internal::Type::RequestParameters
10
+
11
+ OrHash =
12
+ T.type_alias do
13
+ T.any(
14
+ Sentdm::Channels::SMS::TenDlcRetrieveComplianceParams,
15
+ Sentdm::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ sig { returns(T.nilable(String)) }
20
+ attr_reader :x_profile_id
21
+
22
+ sig { params(x_profile_id: String).void }
23
+ attr_writer :x_profile_id
24
+
25
+ sig do
26
+ params(
27
+ x_profile_id: String,
28
+ request_options: Sentdm::RequestOptions::OrHash
29
+ ).returns(T.attached_class)
30
+ end
31
+ def self.new(x_profile_id: nil, request_options: {})
32
+ end
33
+
34
+ sig do
35
+ override.returns(
36
+ { x_profile_id: String, request_options: Sentdm::RequestOptions }
37
+ )
38
+ end
39
+ def to_hash
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end