sentdm 0.46.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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +1 -1
  4. data/lib/sentdm/client.rb +2 -2
  5. data/lib/sentdm/models/channels/sms/api_response_of_supplied_compliance.rb +67 -0
  6. data/lib/sentdm/models/channels/sms/ten_dlc_add_campaign_params.rb +161 -0
  7. data/lib/sentdm/models/channels/sms/ten_dlc_add_numbers_params.rb +65 -0
  8. data/lib/sentdm/models/channels/sms/ten_dlc_campaign_use_case.rb +56 -0
  9. data/lib/sentdm/models/channels/sms/ten_dlc_retrieve_compliance_params.rb +24 -0
  10. data/lib/sentdm/models/channels/sms/ten_dlc_update_campaign_params.rb +168 -0
  11. data/lib/sentdm/models/channels/sms_market.rb +1 -11
  12. data/lib/sentdm/models/channels/sms_number.rb +12 -1
  13. data/lib/sentdm/models/channels/supplied_campaign.rb +10 -0
  14. data/lib/sentdm/models/channels/supplied_compliance.rb +27 -1
  15. data/lib/sentdm/models/profiles/brand_campaign.rb +11 -1
  16. data/lib/sentdm/models/voice/call.rb +4 -3
  17. data/lib/sentdm/resources/channels/sms/ten_dlc.rb +310 -0
  18. data/lib/sentdm/resources/channels/sms.rb +35 -1
  19. data/lib/sentdm/resources/profiles/campaigns.rb +4 -1
  20. data/lib/sentdm/resources/sender_profiles.rb +5 -3
  21. data/lib/sentdm/resources/voice/calls/participants.rb +5 -5
  22. data/lib/sentdm/version.rb +1 -1
  23. data/lib/sentdm.rb +8 -0
  24. data/rbi/sentdm/client.rbi +2 -2
  25. data/rbi/sentdm/models/channels/sms/api_response_of_supplied_compliance.rbi +117 -0
  26. data/rbi/sentdm/models/channels/sms/ten_dlc_add_campaign_params.rbi +255 -0
  27. data/rbi/sentdm/models/channels/sms/ten_dlc_add_numbers_params.rbi +100 -0
  28. data/rbi/sentdm/models/channels/sms/ten_dlc_campaign_use_case.rbi +143 -0
  29. data/rbi/sentdm/models/channels/sms/ten_dlc_retrieve_compliance_params.rbi +45 -0
  30. data/rbi/sentdm/models/channels/sms/ten_dlc_update_campaign_params.rbi +264 -0
  31. data/rbi/sentdm/models/channels/sms_market.rbi +0 -12
  32. data/rbi/sentdm/models/channels/sms_number.rbi +14 -0
  33. data/rbi/sentdm/models/channels/supplied_campaign.rbi +13 -0
  34. data/rbi/sentdm/models/channels/supplied_compliance.rbi +40 -0
  35. data/rbi/sentdm/models/profiles/brand_campaign.rbi +15 -0
  36. data/rbi/sentdm/models/voice/call.rbi +8 -6
  37. data/rbi/sentdm/resources/channels/sms/ten_dlc.rbi +358 -0
  38. data/rbi/sentdm/resources/channels/sms.rbi +34 -1
  39. data/rbi/sentdm/resources/profiles/campaigns.rbi +4 -1
  40. data/rbi/sentdm/resources/sender_profiles.rbi +5 -3
  41. data/rbi/sentdm/resources/voice/calls/participants.rbi +5 -5
  42. data/sig/sentdm/models/channels/sms/api_response_of_supplied_compliance.rbs +43 -0
  43. data/sig/sentdm/models/channels/sms/ten_dlc_add_campaign_params.rbs +130 -0
  44. data/sig/sentdm/models/channels/sms/ten_dlc_add_numbers_params.rbs +54 -0
  45. data/sig/sentdm/models/channels/sms/ten_dlc_campaign_use_case.rbs +60 -0
  46. data/sig/sentdm/models/channels/sms/ten_dlc_retrieve_compliance_params.rbs +29 -0
  47. data/sig/sentdm/models/channels/sms/ten_dlc_update_campaign_params.rbs +137 -0
  48. data/sig/sentdm/models/channels/sms_market.rbs +0 -5
  49. data/sig/sentdm/models/channels/sms_number.rbs +10 -1
  50. data/sig/sentdm/models/channels/supplied_campaign.rbs +9 -0
  51. data/sig/sentdm/models/channels/supplied_compliance.rbs +5 -0
  52. data/sig/sentdm/models/profiles/brand_campaign.rbs +7 -0
  53. data/sig/sentdm/resources/channels/sms/ten_dlc.rbs +64 -0
  54. data/sig/sentdm/resources/channels/sms.rbs +2 -0
  55. metadata +26 -2
@@ -0,0 +1,264 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Channels
6
+ module SMS
7
+ class TenDlcUpdateCampaignParams < 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::TenDlcUpdateCampaignParams,
15
+ Sentdm::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ sig { returns(String) }
20
+ attr_accessor :campaign_id
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 :idempotency_key
146
+
147
+ sig { params(idempotency_key: String).void }
148
+ attr_writer :idempotency_key
149
+
150
+ sig { returns(T.nilable(String)) }
151
+ attr_reader :x_profile_id
152
+
153
+ sig { params(x_profile_id: String).void }
154
+ attr_writer :x_profile_id
155
+
156
+ sig do
157
+ params(
158
+ campaign_id: String,
159
+ description: String,
160
+ help_keywords: String,
161
+ help_message: String,
162
+ message_flow: String,
163
+ opt_in_keywords: String,
164
+ opt_in_message: String,
165
+ opt_out_keywords: String,
166
+ opt_out_message: String,
167
+ privacy_policy_link: String,
168
+ sandbox: T::Boolean,
169
+ terms_and_conditions_link: String,
170
+ use_cases:
171
+ T::Array[Sentdm::Channels::SMS::TenDlcCampaignUseCase::OrHash],
172
+ volume: String,
173
+ idempotency_key: String,
174
+ x_profile_id: String,
175
+ request_options: Sentdm::RequestOptions::OrHash
176
+ ).returns(T.attached_class)
177
+ end
178
+ def self.new(
179
+ campaign_id:,
180
+ # What this programme sends. TCR description: what recipients will get and why, in
181
+ # a sentence. The only one of these TCR takes verbatim as a description of the
182
+ # programme, which is why it is asked for rather than derived from the customer's
183
+ # name. Required when `compliance.campaign.inherit != true`.
184
+ description: nil,
185
+ # Help keywords. TCR helpKeywords, comma separated, e.g. HELP,INFO. Required when
186
+ # `compliance.campaign.inherit != true`.
187
+ help_keywords: nil,
188
+ # Help reply. TCR helpMessage. Its presence is what sets subscriberHelp. Required
189
+ # when `compliance.campaign.inherit != true`.
190
+ help_message: nil,
191
+ # Consent narrative. TCR messageFlow: how recipients opt in, in prose. Under 40
192
+ # characters is refused, and carriers reject vague descriptions — say where opt-in
193
+ # happens, that the box is unchecked by default, and that consent is not a
194
+ # condition of purchase. Required when `compliance.campaign.inherit != true`.
195
+ message_flow: nil,
196
+ # Opt-in keywords. TCR optinKeywords, comma separated, e.g. START,YES. Required
197
+ # when `compliance.campaign.inherit != true`.
198
+ opt_in_keywords: nil,
199
+ # Opt-in confirmation. TCR optinMessage. Should state message frequency and that
200
+ # rates may apply. Its presence is what sets subscriberOptin. Required when
201
+ # `compliance.campaign.inherit != true`.
202
+ opt_in_message: nil,
203
+ # Opt-out keywords. TCR optoutKeywords, comma separated. STOP, END, CANCEL,
204
+ # UNSUBSCRIBE and QUIT are honoured regardless of what is declared. Required when
205
+ # `compliance.campaign.inherit != true`.
206
+ opt_out_keywords: nil,
207
+ # Opt-out confirmation. TCR optoutMessage. Its presence is what sets
208
+ # subscriberOptout. Required when `compliance.campaign.inherit != true`.
209
+ opt_out_message: nil,
210
+ # Privacy policy URL. TCR privacyPolicyLink. Required when
211
+ # `compliance.campaign.inherit != true`.
212
+ privacy_policy_link: nil,
213
+ # Sandbox flag - when true, the operation is simulated without side effects Useful
214
+ # for testing integrations without actual execution
215
+ sandbox: nil,
216
+ # Terms and conditions URL. TCR termsAndConditionsLink. Required when
217
+ # `compliance.campaign.inherit != true`.
218
+ terms_and_conditions_link: nil,
219
+ # Use cases. What the campaign sends, and an example of each. One to five entries;
220
+ # how they register is decided by volume, never declared. Required when
221
+ # `compliance.campaign.inherit != true`.
222
+ use_cases: nil,
223
+ # Expected monthly volume. Decides how the campaign registers and which fee tier
224
+ # applies: below the low-volume threshold it registers as LOW_VOLUME with
225
+ # sub-use-cases, above it as a single use case or MIXED. Omitting it registers the
226
+ # campaign at the higher-fee standard tier.
227
+ volume: nil,
228
+ idempotency_key: nil,
229
+ x_profile_id: nil,
230
+ request_options: {}
231
+ )
232
+ end
233
+
234
+ sig do
235
+ override.returns(
236
+ {
237
+ campaign_id: String,
238
+ description: String,
239
+ help_keywords: String,
240
+ help_message: String,
241
+ message_flow: String,
242
+ opt_in_keywords: String,
243
+ opt_in_message: String,
244
+ opt_out_keywords: String,
245
+ opt_out_message: String,
246
+ privacy_policy_link: String,
247
+ sandbox: T::Boolean,
248
+ terms_and_conditions_link: String,
249
+ use_cases:
250
+ T::Array[Sentdm::Channels::SMS::TenDlcCampaignUseCase],
251
+ volume: String,
252
+ idempotency_key: String,
253
+ x_profile_id: String,
254
+ request_options: Sentdm::RequestOptions
255
+ }
256
+ )
257
+ end
258
+ def to_hash
259
+ end
260
+ end
261
+ end
262
+ end
263
+ end
264
+ end
@@ -67,12 +67,6 @@ module Sentdm
67
67
  sig { returns(T.nilable(String)) }
68
68
  attr_accessor :reason_code
69
69
 
70
- # The sender itself. Null until a carrier-assigned number is procured. For a
71
- # market holding several numbers, the first active one (the first assigned while
72
- # none is active) — every number is in numbers.
73
- sig { returns(T.nilable(String)) }
74
- attr_accessor :sender_value
75
-
76
70
  # Where this market's sender stands, in terms of who is holding it up —
77
71
  # PROVISIONING, ACTION_NEEDED, PENDING_REVIEW or ACTIVE. Read-only.
78
72
  #
@@ -106,7 +100,6 @@ module Sentdm
106
100
  numbers: T::Array[Sentdm::Channels::SMSNumber::OrHash],
107
101
  reason: T.nilable(String),
108
102
  reason_code: T.nilable(String),
109
- sender_value: T.nilable(String),
110
103
  status: T.nilable(Sentdm::Channels::SMSMarket::Status::OrSymbol)
111
104
  ).returns(T.attached_class)
112
105
  end
@@ -145,10 +138,6 @@ module Sentdm
145
138
  # this rather than on reason. Omitted while ACTIVE. Read-only; when nothing more
146
139
  # specific is known it is the generic reason for the status.
147
140
  reason_code: nil,
148
- # The sender itself. Null until a carrier-assigned number is procured. For a
149
- # market holding several numbers, the first active one (the first assigned while
150
- # none is active) — every number is in numbers.
151
- sender_value: nil,
152
141
  # Where this market's sender stands, in terms of who is holding it up —
153
142
  # PROVISIONING, ACTION_NEEDED, PENDING_REVIEW or ACTIVE. Read-only.
154
143
  #
@@ -175,7 +164,6 @@ module Sentdm
175
164
  numbers: T::Array[Sentdm::Channels::SMSNumber],
176
165
  reason: T.nilable(String),
177
166
  reason_code: T.nilable(String),
178
- sender_value: T.nilable(String),
179
167
  status:
180
168
  T.nilable(Sentdm::Channels::SMSMarket::Status::TaggedSymbol)
181
169
  }
@@ -14,6 +14,13 @@ module Sentdm
14
14
  sig { returns(T.nilable(String)) }
15
15
  attr_accessor :area_code
16
16
 
17
+ # The campaign the number is on, or is owed for: the id of its entry in
18
+ # compliance.campaigns. Omitted for a market that registers no campaigns, and
19
+ # where the campaign is not known — a number recorded without one, or one owed on
20
+ # a campaign inherited from the organization.
21
+ sig { returns(T.nilable(String)) }
22
+ attr_accessor :campaign_id
23
+
17
24
  # The number, or null while it is still to be assigned.
18
25
  sig { returns(T.nilable(String)) }
19
26
  attr_accessor :sender_value
@@ -27,6 +34,7 @@ module Sentdm
27
34
  sig do
28
35
  params(
29
36
  area_code: T.nilable(String),
37
+ campaign_id: T.nilable(String),
30
38
  sender_value: T.nilable(String),
31
39
  status: T.nilable(String)
32
40
  ).returns(T.attached_class)
@@ -35,6 +43,11 @@ module Sentdm
35
43
  # The number's area code, e.g. 212. While the number is still to be assigned, the
36
44
  # area code it was asked for, or null when it was asked for in any area code.
37
45
  area_code: nil,
46
+ # The campaign the number is on, or is owed for: the id of its entry in
47
+ # compliance.campaigns. Omitted for a market that registers no campaigns, and
48
+ # where the campaign is not known — a number recorded without one, or one owed on
49
+ # a campaign inherited from the organization.
50
+ campaign_id: nil,
38
51
  # The number, or null while it is still to be assigned.
39
52
  sender_value: nil,
40
53
  # ACTIVE once the number can send; PROVISIONING while it is still to be assigned;
@@ -47,6 +60,7 @@ module Sentdm
47
60
  override.returns(
48
61
  {
49
62
  area_code: T.nilable(String),
63
+ campaign_id: T.nilable(String),
50
64
  sender_value: T.nilable(String),
51
65
  status: T.nilable(String)
52
66
  }
@@ -0,0 +1,13 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ module Channels
6
+ SuppliedCampaign =
7
+ T.let(
8
+ Sentdm::Internal::Type::HashOf[Sentdm::Internal::Type::Unknown],
9
+ Sentdm::Internal::Type::Converter
10
+ )
11
+ end
12
+ end
13
+ end
@@ -44,6 +44,26 @@ module Sentdm
44
44
  sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
45
45
  attr_accessor :campaign
46
46
 
47
+ # Every campaign this market registers, each with inherit saying whose it is —
48
+ # oldest first.
49
+ #
50
+ # A list, because a market can now be on more than one. POST
51
+ # /v3/channels/sms/compliances/US/TEN_DLC/campaigns adds a campaign of the
52
+ # customer's own beside the one it has, and a profile running on its
53
+ # organization's campaign keeps that one when it adds its own. Campaign can only
54
+ # show one of them, so it stays as it was, for callers that read it, and this is
55
+ # where the rest are.
56
+ #
57
+ # The organization's campaign reads "inherit": true and the customer's own read
58
+ # "inherit": false. Each entry is the shape of Campaign plus id, the campaign's
59
+ # own id, so several can be told apart. Campaign carries no id, because it is sent
60
+ # back to PATCH, which refuses a key it does not declare; this list is read-only.
61
+ #
62
+ # Absent for a market that registers with nobody; empty for one that registers and
63
+ # has no campaign yet.
64
+ sig { returns(T.nilable(T::Array[T::Hash[Symbol, T.anything]])) }
65
+ attr_accessor :campaigns
66
+
47
67
  # What has been supplied for this market.
48
68
  #
49
69
  # Files, not values — the declared halves above carry the values. A document
@@ -77,6 +97,7 @@ module Sentdm
77
97
  params(
78
98
  brand: T.nilable(T::Hash[Symbol, T.anything]),
79
99
  campaign: T.nilable(T::Hash[Symbol, T.anything]),
100
+ campaigns: T.nilable(T::Array[T::Hash[Symbol, T.anything]]),
80
101
  documents:
81
102
  T.nilable(T::Array[Sentdm::Channels::SuppliedDocument::OrHash])
82
103
  ).returns(T.attached_class)
@@ -110,6 +131,24 @@ module Sentdm
110
131
  # refused if the caller sent this object back — which it is meant to be able to
111
132
  # do.
112
133
  campaign: nil,
134
+ # Every campaign this market registers, each with inherit saying whose it is —
135
+ # oldest first.
136
+ #
137
+ # A list, because a market can now be on more than one. POST
138
+ # /v3/channels/sms/compliances/US/TEN_DLC/campaigns adds a campaign of the
139
+ # customer's own beside the one it has, and a profile running on its
140
+ # organization's campaign keeps that one when it adds its own. Campaign can only
141
+ # show one of them, so it stays as it was, for callers that read it, and this is
142
+ # where the rest are.
143
+ #
144
+ # The organization's campaign reads "inherit": true and the customer's own read
145
+ # "inherit": false. Each entry is the shape of Campaign plus id, the campaign's
146
+ # own id, so several can be told apart. Campaign carries no id, because it is sent
147
+ # back to PATCH, which refuses a key it does not declare; this list is read-only.
148
+ #
149
+ # Absent for a market that registers with nobody; empty for one that registers and
150
+ # has no campaign yet.
151
+ campaigns: nil,
113
152
  # What has been supplied for this market.
114
153
  #
115
154
  # Files, not values — the declared halves above carry the values. A document
@@ -128,6 +167,7 @@ module Sentdm
128
167
  {
129
168
  brand: T.nilable(T::Hash[Symbol, T.anything]),
130
169
  campaign: T.nilable(T::Hash[Symbol, T.anything]),
170
+ campaigns: T.nilable(T::Array[T::Hash[Symbol, T.anything]]),
131
171
  documents: T.nilable(T::Array[Sentdm::Channels::SuppliedDocument])
132
172
  }
133
173
  )
@@ -63,6 +63,15 @@ module Sentdm
63
63
  sig { returns(T.nilable(String)) }
64
64
  attr_accessor :help_message
65
65
 
66
+ # Whether the campaign is the organization's, which the profile runs on, rather
67
+ # than one of the profile's own. A profile running on its organization's campaign
68
+ # can hold campaigns of its own beside it, and the list returns both.
69
+ sig { returns(T.nilable(T::Boolean)) }
70
+ attr_reader :is_inherited
71
+
72
+ sig { params(is_inherited: T::Boolean).void }
73
+ attr_writer :is_inherited
74
+
66
75
  sig { returns(T.nilable(String)) }
67
76
  attr_accessor :message_flow
68
77
 
@@ -152,6 +161,7 @@ module Sentdm
152
161
  has_submission_transaction: T::Boolean,
153
162
  help_keywords: T.nilable(String),
154
163
  help_message: T.nilable(String),
164
+ is_inherited: T::Boolean,
155
165
  message_flow: T.nilable(String),
156
166
  name: String,
157
167
  optin_keywords: T.nilable(String),
@@ -187,6 +197,10 @@ module Sentdm
187
197
  has_submission_transaction: nil,
188
198
  help_keywords: nil,
189
199
  help_message: nil,
200
+ # Whether the campaign is the organization's, which the profile runs on, rather
201
+ # than one of the profile's own. A profile running on its organization's campaign
202
+ # can hold campaigns of its own beside it, and the list returns both.
203
+ is_inherited: nil,
190
204
  message_flow: nil,
191
205
  name: nil,
192
206
  optin_keywords: nil,
@@ -229,6 +243,7 @@ module Sentdm
229
243
  has_submission_transaction: T::Boolean,
230
244
  help_keywords: T.nilable(String),
231
245
  help_message: T.nilable(String),
246
+ is_inherited: T::Boolean,
232
247
  message_flow: T.nilable(String),
233
248
  name: String,
234
249
  optin_keywords: T.nilable(String),
@@ -54,9 +54,10 @@ module Sentdm
54
54
  attr_accessor :ended_at
55
55
 
56
56
  # Why the call did not complete: callback_timeout, invalid_answer,
57
- # insufficient_balance, destination_blocked, callback_not_configured, rejected,
58
- # no_answer, or for an agent call agent_busy or agent_unreachable. Null while the
59
- # call is live, when it completed, and when it failed without a recorded reason
57
+ # insufficient_balance, payment_method_missing, destination_blocked,
58
+ # callback_not_configured, rejected, no_answer, or for an agent call agent_busy or
59
+ # agent_unreachable. Null while the call is live, when it completed, and when it
60
+ # failed without a recorded reason
60
61
  sig { returns(T.nilable(String)) }
61
62
  attr_accessor :failure_reason
62
63
 
@@ -179,9 +180,10 @@ module Sentdm
179
180
  # When the call ended (UTC). Null while the call is live
180
181
  ended_at: nil,
181
182
  # Why the call did not complete: callback_timeout, invalid_answer,
182
- # insufficient_balance, destination_blocked, callback_not_configured, rejected,
183
- # no_answer, or for an agent call agent_busy or agent_unreachable. Null while the
184
- # call is live, when it completed, and when it failed without a recorded reason
183
+ # insufficient_balance, payment_method_missing, destination_blocked,
184
+ # callback_not_configured, rejected, no_answer, or for an agent call agent_busy or
185
+ # agent_unreachable. Null while the call is live, when it completed, and when it
186
+ # failed without a recorded reason
185
187
  failure_reason: nil,
186
188
  # One end of a call
187
189
  from: nil,