surge_api 0.23.0 → 0.25.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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +9 -9
  4. data/lib/surge_api/client.rb +4 -0
  5. data/lib/surge_api/internal/type/union.rb +2 -2
  6. data/lib/surge_api/models/account_retrieve_status_params.rb +1 -0
  7. data/lib/surge_api/models/call_ended_webhook_event.rb +8 -3
  8. data/lib/surge_api/models/campaign.rb +21 -13
  9. data/lib/surge_api/models/campaign_approved_webhook_event.rb +9 -1
  10. data/lib/surge_api/models/campaign_params.rb +11 -12
  11. data/lib/surge_api/models/campaign_rejected_webhook_event.rb +135 -0
  12. data/lib/surge_api/models/campaign_submitted_webhook_event.rb +74 -0
  13. data/lib/surge_api/models/campaign_update_params.rb +188 -1
  14. data/lib/surge_api/models/campaign_warning_webhook_event.rb +134 -0
  15. data/lib/surge_api/models/message.rb +42 -2
  16. data/lib/surge_api/models/message_delivered_webhook_event.rb +29 -1
  17. data/lib/surge_api/models/message_failed_webhook_event.rb +26 -5
  18. data/lib/surge_api/models/message_received_webhook_event.rb +29 -1
  19. data/lib/surge_api/models/message_sent_webhook_event.rb +29 -1
  20. data/lib/surge_api/models/phone_number.rb +9 -1
  21. data/lib/surge_api/models/phone_number_attached_to_campaign_webhook_event.rb +9 -1
  22. data/lib/surge_api/models/phone_number_imported_webhook_event.rb +160 -0
  23. data/lib/surge_api/models/phone_number_purchase_params.rb +9 -1
  24. data/lib/surge_api/models/phone_number_update_params.rb +9 -1
  25. data/lib/surge_api/models/toll_free_campaign.rb +132 -0
  26. data/lib/surge_api/models/toll_free_campaign_consent_flow.rb +176 -0
  27. data/lib/surge_api/models/toll_free_campaign_create_params.rb +22 -0
  28. data/lib/surge_api/models/toll_free_campaign_list_params.rb +42 -0
  29. data/lib/surge_api/models/toll_free_campaign_params.rb +286 -0
  30. data/lib/surge_api/models/toll_free_campaign_retrieve_params.rb +22 -0
  31. data/lib/surge_api/models/toll_free_campaign_update_params.rb +278 -0
  32. data/lib/surge_api/models/unwrap_webhook_event.rb +9 -1
  33. data/lib/surge_api/models/user_create_token_params.rb +15 -1
  34. data/lib/surge_api/models.rb +22 -0
  35. data/lib/surge_api/resources/accounts.rb +2 -2
  36. data/lib/surge_api/resources/campaigns.rb +26 -8
  37. data/lib/surge_api/resources/phone_numbers.rb +6 -2
  38. data/lib/surge_api/resources/toll_free_campaigns.rb +140 -0
  39. data/lib/surge_api/resources/users.rb +6 -1
  40. data/lib/surge_api/resources/webhooks.rb +1 -1
  41. data/lib/surge_api/version.rb +1 -1
  42. data/lib/surge_api.rb +12 -0
  43. data/rbi/surge_api/client.rbi +3 -0
  44. data/rbi/surge_api/models/account_retrieve_status_params.rbi +5 -0
  45. data/rbi/surge_api/models/call_ended_webhook_event.rbi +6 -3
  46. data/rbi/surge_api/models/campaign.rbi +26 -19
  47. data/rbi/surge_api/models/campaign_approved_webhook_event.rbi +8 -0
  48. data/rbi/surge_api/models/campaign_params.rbi +17 -19
  49. data/rbi/surge_api/models/campaign_rejected_webhook_event.rbi +269 -0
  50. data/rbi/surge_api/models/campaign_submitted_webhook_event.rbi +149 -0
  51. data/rbi/surge_api/models/campaign_update_params.rbi +378 -1
  52. data/rbi/surge_api/models/campaign_warning_webhook_event.rbi +259 -0
  53. data/rbi/surge_api/models/message.rbi +50 -3
  54. data/rbi/surge_api/models/message_delivered_webhook_event.rbi +52 -0
  55. data/rbi/surge_api/models/message_failed_webhook_event.rbi +47 -5
  56. data/rbi/surge_api/models/message_received_webhook_event.rbi +49 -0
  57. data/rbi/surge_api/models/message_sent_webhook_event.rbi +46 -0
  58. data/rbi/surge_api/models/phone_number.rbi +8 -0
  59. data/rbi/surge_api/models/phone_number_attached_to_campaign_webhook_event.rbi +8 -0
  60. data/rbi/surge_api/models/phone_number_imported_webhook_event.rbi +318 -0
  61. data/rbi/surge_api/models/phone_number_purchase_params.rbi +11 -0
  62. data/rbi/surge_api/models/phone_number_update_params.rbi +11 -0
  63. data/rbi/surge_api/models/toll_free_campaign.rbi +230 -0
  64. data/rbi/surge_api/models/toll_free_campaign_consent_flow.rbi +476 -0
  65. data/rbi/surge_api/models/toll_free_campaign_create_params.rbi +43 -0
  66. data/rbi/surge_api/models/toll_free_campaign_list_params.rbi +70 -0
  67. data/rbi/surge_api/models/toll_free_campaign_params.rbi +711 -0
  68. data/rbi/surge_api/models/toll_free_campaign_retrieve_params.rbi +43 -0
  69. data/rbi/surge_api/models/toll_free_campaign_update_params.rbi +760 -0
  70. data/rbi/surge_api/models/unwrap_webhook_event.rbi +4 -0
  71. data/rbi/surge_api/models/user_create_token_params.rbi +17 -0
  72. data/rbi/surge_api/models.rbi +25 -0
  73. data/rbi/surge_api/resources/accounts.rbi +2 -2
  74. data/rbi/surge_api/resources/campaigns.rbi +94 -12
  75. data/rbi/surge_api/resources/phone_numbers.rbi +6 -0
  76. data/rbi/surge_api/resources/toll_free_campaigns.rbi +129 -0
  77. data/rbi/surge_api/resources/users.rbi +6 -0
  78. data/rbi/surge_api/resources/webhooks.rbi +4 -0
  79. data/sig/surge_api/client.rbs +2 -0
  80. data/sig/surge_api/models/account_retrieve_status_params.rbs +2 -1
  81. data/sig/surge_api/models/campaign.rbs +8 -1
  82. data/sig/surge_api/models/campaign_approved_webhook_event.rbs +5 -0
  83. data/sig/surge_api/models/campaign_rejected_webhook_event.rbs +115 -0
  84. data/sig/surge_api/models/campaign_submitted_webhook_event.rbs +67 -0
  85. data/sig/surge_api/models/campaign_update_params.rbs +128 -2
  86. data/sig/surge_api/models/campaign_warning_webhook_event.rbs +114 -0
  87. data/sig/surge_api/models/message.rbs +36 -3
  88. data/sig/surge_api/models/message_delivered_webhook_event.rbs +20 -0
  89. data/sig/surge_api/models/message_failed_webhook_event.rbs +19 -4
  90. data/sig/surge_api/models/message_received_webhook_event.rbs +20 -0
  91. data/sig/surge_api/models/message_sent_webhook_event.rbs +20 -0
  92. data/sig/surge_api/models/phone_number.rbs +5 -0
  93. data/sig/surge_api/models/phone_number_attached_to_campaign_webhook_event.rbs +5 -0
  94. data/sig/surge_api/models/phone_number_imported_webhook_event.rbs +130 -0
  95. data/sig/surge_api/models/phone_number_purchase_params.rbs +7 -0
  96. data/sig/surge_api/models/phone_number_update_params.rbs +12 -1
  97. data/sig/surge_api/models/toll_free_campaign.rbs +126 -0
  98. data/sig/surge_api/models/toll_free_campaign_consent_flow.rbs +207 -0
  99. data/sig/surge_api/models/toll_free_campaign_create_params.rbs +25 -0
  100. data/sig/surge_api/models/toll_free_campaign_list_params.rbs +36 -0
  101. data/sig/surge_api/models/toll_free_campaign_params.rbs +321 -0
  102. data/sig/surge_api/models/toll_free_campaign_retrieve_params.rbs +23 -0
  103. data/sig/surge_api/models/toll_free_campaign_update_params.rbs +332 -0
  104. data/sig/surge_api/models/unwrap_webhook_event.rbs +4 -0
  105. data/sig/surge_api/models/user_create_token_params.rbs +7 -1
  106. data/sig/surge_api/models.rbs +22 -0
  107. data/sig/surge_api/resources/campaigns.rbs +9 -1
  108. data/sig/surge_api/resources/phone_numbers.rbs +2 -0
  109. data/sig/surge_api/resources/toll_free_campaigns.rbs +44 -0
  110. data/sig/surge_api/resources/users.rbs +1 -0
  111. data/sig/surge_api/resources/webhooks.rbs +4 -0
  112. metadata +53 -7
@@ -0,0 +1,711 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class TollFreeCampaignParams < SurgeAPI::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(SurgeAPI::TollFreeCampaignParams, SurgeAPI::Internal::AnyHash)
9
+ end
10
+
11
+ sig do
12
+ returns(
13
+ T::Array[
14
+ T.any(
15
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0,
16
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1,
17
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2,
18
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3
19
+ )
20
+ ]
21
+ )
22
+ end
23
+ attr_accessor :consent_flows
24
+
25
+ # An explanation of how the toll-free number will be used.
26
+ sig { returns(String) }
27
+ attr_accessor :description
28
+
29
+ sig { returns(T::Array[String]) }
30
+ attr_accessor :message_samples
31
+
32
+ # The toll-free phone number to register.
33
+ sig { returns(String) }
34
+ attr_accessor :phone_number_id
35
+
36
+ sig { returns(String) }
37
+ attr_accessor :privacy_policy_url
38
+
39
+ sig { returns(String) }
40
+ attr_accessor :terms_and_conditions_url
41
+
42
+ sig do
43
+ returns(T::Array[SurgeAPI::TollFreeCampaignParams::UseCase::OrSymbol])
44
+ end
45
+ attr_accessor :use_cases
46
+
47
+ sig do
48
+ returns(
49
+ T.nilable(
50
+ T::Array[SurgeAPI::TollFreeCampaignParams::Include::OrSymbol]
51
+ )
52
+ )
53
+ end
54
+ attr_reader :includes
55
+
56
+ sig do
57
+ params(
58
+ includes:
59
+ T::Array[SurgeAPI::TollFreeCampaignParams::Include::OrSymbol]
60
+ ).void
61
+ end
62
+ attr_writer :includes
63
+
64
+ # Parameters for creating a toll-free campaign through Surge
65
+ sig do
66
+ params(
67
+ consent_flows:
68
+ T::Array[
69
+ T.any(
70
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0::OrHash,
71
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::OrHash,
72
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2::OrHash,
73
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3::OrHash
74
+ )
75
+ ],
76
+ description: String,
77
+ message_samples: T::Array[String],
78
+ phone_number_id: String,
79
+ privacy_policy_url: String,
80
+ terms_and_conditions_url: String,
81
+ use_cases:
82
+ T::Array[SurgeAPI::TollFreeCampaignParams::UseCase::OrSymbol],
83
+ includes:
84
+ T::Array[SurgeAPI::TollFreeCampaignParams::Include::OrSymbol]
85
+ ).returns(T.attached_class)
86
+ end
87
+ def self.new(
88
+ consent_flows:,
89
+ # An explanation of how the toll-free number will be used.
90
+ description:,
91
+ message_samples:,
92
+ # The toll-free phone number to register.
93
+ phone_number_id:,
94
+ privacy_policy_url:,
95
+ terms_and_conditions_url:,
96
+ use_cases:,
97
+ includes: nil
98
+ )
99
+ end
100
+
101
+ sig do
102
+ override.returns(
103
+ {
104
+ consent_flows:
105
+ T::Array[
106
+ T.any(
107
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0,
108
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1,
109
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2,
110
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3
111
+ )
112
+ ],
113
+ description: String,
114
+ message_samples: T::Array[String],
115
+ phone_number_id: String,
116
+ privacy_policy_url: String,
117
+ terms_and_conditions_url: String,
118
+ use_cases:
119
+ T::Array[SurgeAPI::TollFreeCampaignParams::UseCase::OrSymbol],
120
+ includes:
121
+ T::Array[SurgeAPI::TollFreeCampaignParams::Include::OrSymbol]
122
+ }
123
+ )
124
+ end
125
+ def to_hash
126
+ end
127
+
128
+ module ConsentFlow
129
+ extend SurgeAPI::Internal::Type::Union
130
+
131
+ Variants =
132
+ T.type_alias do
133
+ T.any(
134
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0,
135
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1,
136
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2,
137
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3
138
+ )
139
+ end
140
+
141
+ class UnionMember0 < SurgeAPI::Internal::Type::BaseModel
142
+ OrHash =
143
+ T.type_alias do
144
+ T.any(
145
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0,
146
+ SurgeAPI::Internal::AnyHash
147
+ )
148
+ end
149
+
150
+ sig { returns(String) }
151
+ attr_accessor :script
152
+
153
+ sig do
154
+ returns(
155
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0::Type::OrSymbol
156
+ )
157
+ end
158
+ attr_accessor :type
159
+
160
+ sig do
161
+ params(
162
+ script: String,
163
+ type:
164
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0::Type::OrSymbol
165
+ ).returns(T.attached_class)
166
+ end
167
+ def self.new(script:, type:)
168
+ end
169
+
170
+ sig do
171
+ override.returns(
172
+ {
173
+ script: String,
174
+ type:
175
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0::Type::OrSymbol
176
+ }
177
+ )
178
+ end
179
+ def to_hash
180
+ end
181
+
182
+ module Type
183
+ extend SurgeAPI::Internal::Type::Enum
184
+
185
+ TaggedSymbol =
186
+ T.type_alias do
187
+ T.all(
188
+ Symbol,
189
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0::Type
190
+ )
191
+ end
192
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
193
+
194
+ VERBAL =
195
+ T.let(
196
+ :verbal,
197
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0::Type::TaggedSymbol
198
+ )
199
+
200
+ sig do
201
+ override.returns(
202
+ T::Array[
203
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0::Type::TaggedSymbol
204
+ ]
205
+ )
206
+ end
207
+ def self.values
208
+ end
209
+ end
210
+ end
211
+
212
+ class UnionMember1 < SurgeAPI::Internal::Type::BaseModel
213
+ OrHash =
214
+ T.type_alias do
215
+ T.any(
216
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1,
217
+ SurgeAPI::Internal::AnyHash
218
+ )
219
+ end
220
+
221
+ sig do
222
+ returns(
223
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Owner::OrSymbol
224
+ )
225
+ end
226
+ attr_accessor :owner
227
+
228
+ sig do
229
+ returns(
230
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Type::OrSymbol
231
+ )
232
+ end
233
+ attr_accessor :type
234
+
235
+ sig { returns(T.nilable(String)) }
236
+ attr_reader :form_url
237
+
238
+ sig { params(form_url: String).void }
239
+ attr_writer :form_url
240
+
241
+ sig do
242
+ returns(
243
+ T.nilable(
244
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot
245
+ )
246
+ )
247
+ end
248
+ attr_reader :screenshot
249
+
250
+ sig do
251
+ params(
252
+ screenshot:
253
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::OrHash
254
+ ).void
255
+ end
256
+ attr_writer :screenshot
257
+
258
+ sig do
259
+ params(
260
+ owner:
261
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Owner::OrSymbol,
262
+ type:
263
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Type::OrSymbol,
264
+ form_url: String,
265
+ screenshot:
266
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::OrHash
267
+ ).returns(T.attached_class)
268
+ end
269
+ def self.new(owner:, type:, form_url: nil, screenshot: nil)
270
+ end
271
+
272
+ sig do
273
+ override.returns(
274
+ {
275
+ owner:
276
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Owner::OrSymbol,
277
+ type:
278
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Type::OrSymbol,
279
+ form_url: String,
280
+ screenshot:
281
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot
282
+ }
283
+ )
284
+ end
285
+ def to_hash
286
+ end
287
+
288
+ module Owner
289
+ extend SurgeAPI::Internal::Type::Enum
290
+
291
+ TaggedSymbol =
292
+ T.type_alias do
293
+ T.all(
294
+ Symbol,
295
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Owner
296
+ )
297
+ end
298
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
299
+
300
+ BRAND =
301
+ T.let(
302
+ :brand,
303
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Owner::TaggedSymbol
304
+ )
305
+ PLATFORM =
306
+ T.let(
307
+ :platform,
308
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Owner::TaggedSymbol
309
+ )
310
+
311
+ sig do
312
+ override.returns(
313
+ T::Array[
314
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Owner::TaggedSymbol
315
+ ]
316
+ )
317
+ end
318
+ def self.values
319
+ end
320
+ end
321
+
322
+ module Type
323
+ extend SurgeAPI::Internal::Type::Enum
324
+
325
+ TaggedSymbol =
326
+ T.type_alias do
327
+ T.all(
328
+ Symbol,
329
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Type
330
+ )
331
+ end
332
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
333
+
334
+ WEB_FORM =
335
+ T.let(
336
+ :web_form,
337
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Type::TaggedSymbol
338
+ )
339
+
340
+ sig do
341
+ override.returns(
342
+ T::Array[
343
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Type::TaggedSymbol
344
+ ]
345
+ )
346
+ end
347
+ def self.values
348
+ end
349
+ end
350
+
351
+ class Screenshot < SurgeAPI::Internal::Type::BaseModel
352
+ OrHash =
353
+ T.type_alias do
354
+ T.any(
355
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot,
356
+ SurgeAPI::Internal::AnyHash
357
+ )
358
+ end
359
+
360
+ sig do
361
+ returns(
362
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::Reason::OrSymbol
363
+ )
364
+ end
365
+ attr_accessor :reason
366
+
367
+ sig { returns(T::Array[String]) }
368
+ attr_accessor :urls
369
+
370
+ sig { returns(T.nilable(String)) }
371
+ attr_reader :reason_other
372
+
373
+ sig { params(reason_other: String).void }
374
+ attr_writer :reason_other
375
+
376
+ sig do
377
+ params(
378
+ reason:
379
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::Reason::OrSymbol,
380
+ urls: T::Array[String],
381
+ reason_other: String
382
+ ).returns(T.attached_class)
383
+ end
384
+ def self.new(reason:, urls:, reason_other: nil)
385
+ end
386
+
387
+ sig do
388
+ override.returns(
389
+ {
390
+ reason:
391
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::Reason::OrSymbol,
392
+ urls: T::Array[String],
393
+ reason_other: String
394
+ }
395
+ )
396
+ end
397
+ def to_hash
398
+ end
399
+
400
+ module Reason
401
+ extend SurgeAPI::Internal::Type::Enum
402
+
403
+ TaggedSymbol =
404
+ T.type_alias do
405
+ T.all(
406
+ Symbol,
407
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::Reason
408
+ )
409
+ end
410
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
411
+
412
+ BEHIND_LOGIN =
413
+ T.let(
414
+ :behind_login,
415
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::Reason::TaggedSymbol
416
+ )
417
+ UNDER_CONSTRUCTION =
418
+ T.let(
419
+ :under_construction,
420
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::Reason::TaggedSymbol
421
+ )
422
+ OTHER =
423
+ T.let(
424
+ :other,
425
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::Reason::TaggedSymbol
426
+ )
427
+
428
+ sig do
429
+ override.returns(
430
+ T::Array[
431
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::Reason::TaggedSymbol
432
+ ]
433
+ )
434
+ end
435
+ def self.values
436
+ end
437
+ end
438
+ end
439
+ end
440
+
441
+ class UnionMember2 < SurgeAPI::Internal::Type::BaseModel
442
+ OrHash =
443
+ T.type_alias do
444
+ T.any(
445
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2,
446
+ SurgeAPI::Internal::AnyHash
447
+ )
448
+ end
449
+
450
+ sig { returns(T::Array[String]) }
451
+ attr_accessor :file_urls
452
+
453
+ sig do
454
+ returns(
455
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2::Type::OrSymbol
456
+ )
457
+ end
458
+ attr_accessor :type
459
+
460
+ sig { returns(T.nilable(T::Array[String])) }
461
+ attr_reader :keywords
462
+
463
+ sig { params(keywords: T::Array[String]).void }
464
+ attr_writer :keywords
465
+
466
+ sig do
467
+ params(
468
+ file_urls: T::Array[String],
469
+ type:
470
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2::Type::OrSymbol,
471
+ keywords: T::Array[String]
472
+ ).returns(T.attached_class)
473
+ end
474
+ def self.new(file_urls:, type:, keywords: nil)
475
+ end
476
+
477
+ sig do
478
+ override.returns(
479
+ {
480
+ file_urls: T::Array[String],
481
+ type:
482
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2::Type::OrSymbol,
483
+ keywords: T::Array[String]
484
+ }
485
+ )
486
+ end
487
+ def to_hash
488
+ end
489
+
490
+ module Type
491
+ extend SurgeAPI::Internal::Type::Enum
492
+
493
+ TaggedSymbol =
494
+ T.type_alias do
495
+ T.all(
496
+ Symbol,
497
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2::Type
498
+ )
499
+ end
500
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
501
+
502
+ TEXT =
503
+ T.let(
504
+ :text,
505
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2::Type::TaggedSymbol
506
+ )
507
+
508
+ sig do
509
+ override.returns(
510
+ T::Array[
511
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2::Type::TaggedSymbol
512
+ ]
513
+ )
514
+ end
515
+ def self.values
516
+ end
517
+ end
518
+ end
519
+
520
+ class UnionMember3 < SurgeAPI::Internal::Type::BaseModel
521
+ OrHash =
522
+ T.type_alias do
523
+ T.any(
524
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3,
525
+ SurgeAPI::Internal::AnyHash
526
+ )
527
+ end
528
+
529
+ sig { returns(T::Array[String]) }
530
+ attr_accessor :file_urls
531
+
532
+ sig do
533
+ returns(
534
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3::Type::OrSymbol
535
+ )
536
+ end
537
+ attr_accessor :type
538
+
539
+ sig do
540
+ params(
541
+ file_urls: T::Array[String],
542
+ type:
543
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3::Type::OrSymbol
544
+ ).returns(T.attached_class)
545
+ end
546
+ def self.new(file_urls:, type:)
547
+ end
548
+
549
+ sig do
550
+ override.returns(
551
+ {
552
+ file_urls: T::Array[String],
553
+ type:
554
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3::Type::OrSymbol
555
+ }
556
+ )
557
+ end
558
+ def to_hash
559
+ end
560
+
561
+ module Type
562
+ extend SurgeAPI::Internal::Type::Enum
563
+
564
+ TaggedSymbol =
565
+ T.type_alias do
566
+ T.all(
567
+ Symbol,
568
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3::Type
569
+ )
570
+ end
571
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
572
+
573
+ PAPER_FORM =
574
+ T.let(
575
+ :paper_form,
576
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3::Type::TaggedSymbol
577
+ )
578
+
579
+ sig do
580
+ override.returns(
581
+ T::Array[
582
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3::Type::TaggedSymbol
583
+ ]
584
+ )
585
+ end
586
+ def self.values
587
+ end
588
+ end
589
+ end
590
+
591
+ sig do
592
+ override.returns(
593
+ T::Array[SurgeAPI::TollFreeCampaignParams::ConsentFlow::Variants]
594
+ )
595
+ end
596
+ def self.variants
597
+ end
598
+ end
599
+
600
+ module UseCase
601
+ extend SurgeAPI::Internal::Type::Enum
602
+
603
+ TaggedSymbol =
604
+ T.type_alias do
605
+ T.all(Symbol, SurgeAPI::TollFreeCampaignParams::UseCase)
606
+ end
607
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
608
+
609
+ TWO_FACTOR_AUTHENTICATION =
610
+ T.let(
611
+ :two_factor_authentication,
612
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
613
+ )
614
+ ACCOUNT_NOTIFICATION =
615
+ T.let(
616
+ :account_notification,
617
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
618
+ )
619
+ CUSTOMER_CARE =
620
+ T.let(
621
+ :customer_care,
622
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
623
+ )
624
+ CHARITY =
625
+ T.let(
626
+ :charity,
627
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
628
+ )
629
+ DELIVERY_NOTIFICATION =
630
+ T.let(
631
+ :delivery_notification,
632
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
633
+ )
634
+ FRAUD_ALERT =
635
+ T.let(
636
+ :fraud_alert,
637
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
638
+ )
639
+ EVENT =
640
+ T.let(:event, SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol)
641
+ HIGHER_EDUCATION =
642
+ T.let(
643
+ :higher_education,
644
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
645
+ )
646
+ K12_EDUCATION =
647
+ T.let(
648
+ :k12_education,
649
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
650
+ )
651
+ MARKETING =
652
+ T.let(
653
+ :marketing,
654
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
655
+ )
656
+ POLLING_VOTING =
657
+ T.let(
658
+ :polling_voting,
659
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
660
+ )
661
+ POLITICAL =
662
+ T.let(
663
+ :political,
664
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
665
+ )
666
+ PUBLIC_SERVICE_ANNOUNCEMENT =
667
+ T.let(
668
+ :public_service_announcement,
669
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
670
+ )
671
+ SECURITY_ALERT =
672
+ T.let(
673
+ :security_alert,
674
+ SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol
675
+ )
676
+
677
+ sig do
678
+ override.returns(
679
+ T::Array[SurgeAPI::TollFreeCampaignParams::UseCase::TaggedSymbol]
680
+ )
681
+ end
682
+ def self.values
683
+ end
684
+ end
685
+
686
+ module Include
687
+ extend SurgeAPI::Internal::Type::Enum
688
+
689
+ TaggedSymbol =
690
+ T.type_alias do
691
+ T.all(Symbol, SurgeAPI::TollFreeCampaignParams::Include)
692
+ end
693
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
694
+
695
+ AGE_GATED =
696
+ T.let(
697
+ :age_gated,
698
+ SurgeAPI::TollFreeCampaignParams::Include::TaggedSymbol
699
+ )
700
+
701
+ sig do
702
+ override.returns(
703
+ T::Array[SurgeAPI::TollFreeCampaignParams::Include::TaggedSymbol]
704
+ )
705
+ end
706
+ def self.values
707
+ end
708
+ end
709
+ end
710
+ end
711
+ end