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,321 @@
1
+ module SurgeAPI
2
+ module Models
3
+ type toll_free_campaign_params =
4
+ {
5
+ consent_flows: ::Array[SurgeAPI::Models::TollFreeCampaignParams::consent_flow],
6
+ description: String,
7
+ message_samples: ::Array[String],
8
+ phone_number_id: String,
9
+ privacy_policy_url: String,
10
+ terms_and_conditions_url: String,
11
+ use_cases: ::Array[SurgeAPI::Models::TollFreeCampaignParams::use_case],
12
+ includes: ::Array[SurgeAPI::Models::TollFreeCampaignParams::include_]
13
+ }
14
+
15
+ class TollFreeCampaignParams < SurgeAPI::Internal::Type::BaseModel
16
+ attr_accessor consent_flows: ::Array[SurgeAPI::Models::TollFreeCampaignParams::consent_flow]
17
+
18
+ attr_accessor description: String
19
+
20
+ attr_accessor message_samples: ::Array[String]
21
+
22
+ attr_accessor phone_number_id: String
23
+
24
+ attr_accessor privacy_policy_url: String
25
+
26
+ attr_accessor terms_and_conditions_url: String
27
+
28
+ attr_accessor use_cases: ::Array[SurgeAPI::Models::TollFreeCampaignParams::use_case]
29
+
30
+ attr_reader includes: ::Array[SurgeAPI::Models::TollFreeCampaignParams::include_]?
31
+
32
+ def includes=: (
33
+ ::Array[SurgeAPI::Models::TollFreeCampaignParams::include_]
34
+ ) -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::include_]
35
+
36
+ def initialize: (
37
+ consent_flows: ::Array[SurgeAPI::Models::TollFreeCampaignParams::consent_flow],
38
+ description: String,
39
+ message_samples: ::Array[String],
40
+ phone_number_id: String,
41
+ privacy_policy_url: String,
42
+ terms_and_conditions_url: String,
43
+ use_cases: ::Array[SurgeAPI::Models::TollFreeCampaignParams::use_case],
44
+ ?includes: ::Array[SurgeAPI::Models::TollFreeCampaignParams::include_]
45
+ ) -> void
46
+
47
+ def to_hash: -> {
48
+ consent_flows: ::Array[SurgeAPI::Models::TollFreeCampaignParams::consent_flow],
49
+ description: String,
50
+ message_samples: ::Array[String],
51
+ phone_number_id: String,
52
+ privacy_policy_url: String,
53
+ terms_and_conditions_url: String,
54
+ use_cases: ::Array[SurgeAPI::Models::TollFreeCampaignParams::use_case],
55
+ includes: ::Array[SurgeAPI::Models::TollFreeCampaignParams::include_]
56
+ }
57
+
58
+ type consent_flow =
59
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember0
60
+ | SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1
61
+ | SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember2
62
+ | SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember3
63
+
64
+ module ConsentFlow
65
+ extend SurgeAPI::Internal::Type::Union
66
+
67
+ type union_member0 =
68
+ {
69
+ script: String,
70
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember0::type_
71
+ }
72
+
73
+ class UnionMember0 < SurgeAPI::Internal::Type::BaseModel
74
+ attr_accessor script: String
75
+
76
+ attr_accessor type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember0::type_
77
+
78
+ def initialize: (
79
+ script: String,
80
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember0::type_
81
+ ) -> void
82
+
83
+ def to_hash: -> {
84
+ script: String,
85
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember0::type_
86
+ }
87
+
88
+ type type_ = :verbal
89
+
90
+ module Type
91
+ extend SurgeAPI::Internal::Type::Enum
92
+
93
+ VERBAL: :verbal
94
+
95
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember0::type_]
96
+ end
97
+ end
98
+
99
+ type union_member1 =
100
+ {
101
+ owner: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::owner,
102
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::type_,
103
+ form_url: String,
104
+ screenshot: SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot
105
+ }
106
+
107
+ class UnionMember1 < SurgeAPI::Internal::Type::BaseModel
108
+ attr_accessor owner: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::owner
109
+
110
+ attr_accessor type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::type_
111
+
112
+ attr_reader form_url: String?
113
+
114
+ def form_url=: (String) -> String
115
+
116
+ attr_reader screenshot: SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot?
117
+
118
+ def screenshot=: (
119
+ SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot
120
+ ) -> SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot
121
+
122
+ def initialize: (
123
+ owner: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::owner,
124
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::type_,
125
+ ?form_url: String,
126
+ ?screenshot: SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot
127
+ ) -> void
128
+
129
+ def to_hash: -> {
130
+ owner: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::owner,
131
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::type_,
132
+ form_url: String,
133
+ screenshot: SurgeAPI::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot
134
+ }
135
+
136
+ type owner = :brand | :platform
137
+
138
+ module Owner
139
+ extend SurgeAPI::Internal::Type::Enum
140
+
141
+ BRAND: :brand
142
+ PLATFORM: :platform
143
+
144
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::owner]
145
+ end
146
+
147
+ type type_ = :web_form
148
+
149
+ module Type
150
+ extend SurgeAPI::Internal::Type::Enum
151
+
152
+ WEB_FORM: :web_form
153
+
154
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::type_]
155
+ end
156
+
157
+ type screenshot =
158
+ {
159
+ reason: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::reason,
160
+ urls: ::Array[String],
161
+ reason_other: String
162
+ }
163
+
164
+ class Screenshot < SurgeAPI::Internal::Type::BaseModel
165
+ attr_accessor reason: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::reason
166
+
167
+ attr_accessor urls: ::Array[String]
168
+
169
+ attr_reader reason_other: String?
170
+
171
+ def reason_other=: (String) -> String
172
+
173
+ def initialize: (
174
+ reason: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::reason,
175
+ urls: ::Array[String],
176
+ ?reason_other: String
177
+ ) -> void
178
+
179
+ def to_hash: -> {
180
+ reason: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::reason,
181
+ urls: ::Array[String],
182
+ reason_other: String
183
+ }
184
+
185
+ type reason = :behind_login | :under_construction | :other
186
+
187
+ module Reason
188
+ extend SurgeAPI::Internal::Type::Enum
189
+
190
+ BEHIND_LOGIN: :behind_login
191
+ UNDER_CONSTRUCTION: :under_construction
192
+ OTHER: :other
193
+
194
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1::Screenshot::reason]
195
+ end
196
+ end
197
+ end
198
+
199
+ type union_member2 =
200
+ {
201
+ file_urls: ::Array[String],
202
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember2::type_,
203
+ keywords: ::Array[String]
204
+ }
205
+
206
+ class UnionMember2 < SurgeAPI::Internal::Type::BaseModel
207
+ attr_accessor file_urls: ::Array[String]
208
+
209
+ attr_accessor type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember2::type_
210
+
211
+ attr_reader keywords: ::Array[String]?
212
+
213
+ def keywords=: (::Array[String]) -> ::Array[String]
214
+
215
+ def initialize: (
216
+ file_urls: ::Array[String],
217
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember2::type_,
218
+ ?keywords: ::Array[String]
219
+ ) -> void
220
+
221
+ def to_hash: -> {
222
+ file_urls: ::Array[String],
223
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember2::type_,
224
+ keywords: ::Array[String]
225
+ }
226
+
227
+ type type_ = :text
228
+
229
+ module Type
230
+ extend SurgeAPI::Internal::Type::Enum
231
+
232
+ TEXT: :text
233
+
234
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember2::type_]
235
+ end
236
+ end
237
+
238
+ type union_member3 =
239
+ {
240
+ file_urls: ::Array[String],
241
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember3::type_
242
+ }
243
+
244
+ class UnionMember3 < SurgeAPI::Internal::Type::BaseModel
245
+ attr_accessor file_urls: ::Array[String]
246
+
247
+ attr_accessor type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember3::type_
248
+
249
+ def initialize: (
250
+ file_urls: ::Array[String],
251
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember3::type_
252
+ ) -> void
253
+
254
+ def to_hash: -> {
255
+ file_urls: ::Array[String],
256
+ type: SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember3::type_
257
+ }
258
+
259
+ type type_ = :paper_form
260
+
261
+ module Type
262
+ extend SurgeAPI::Internal::Type::Enum
263
+
264
+ PAPER_FORM: :paper_form
265
+
266
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember3::type_]
267
+ end
268
+ end
269
+
270
+ def self?.variants: -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::consent_flow]
271
+ end
272
+
273
+ type use_case =
274
+ :two_factor_authentication
275
+ | :account_notification
276
+ | :customer_care
277
+ | :charity
278
+ | :delivery_notification
279
+ | :fraud_alert
280
+ | :event
281
+ | :higher_education
282
+ | :k12_education
283
+ | :marketing
284
+ | :polling_voting
285
+ | :political
286
+ | :public_service_announcement
287
+ | :security_alert
288
+
289
+ module UseCase
290
+ extend SurgeAPI::Internal::Type::Enum
291
+
292
+ TWO_FACTOR_AUTHENTICATION: :two_factor_authentication
293
+ ACCOUNT_NOTIFICATION: :account_notification
294
+ CUSTOMER_CARE: :customer_care
295
+ CHARITY: :charity
296
+ DELIVERY_NOTIFICATION: :delivery_notification
297
+ FRAUD_ALERT: :fraud_alert
298
+ EVENT: :event
299
+ HIGHER_EDUCATION: :higher_education
300
+ K12_EDUCATION: :k12_education
301
+ MARKETING: :marketing
302
+ POLLING_VOTING: :polling_voting
303
+ POLITICAL: :political
304
+ PUBLIC_SERVICE_ANNOUNCEMENT: :public_service_announcement
305
+ SECURITY_ALERT: :security_alert
306
+
307
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::use_case]
308
+ end
309
+
310
+ type include_ = :age_gated
311
+
312
+ module Include
313
+ extend SurgeAPI::Internal::Type::Enum
314
+
315
+ AGE_GATED: :age_gated
316
+
317
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignParams::include_]
318
+ end
319
+ end
320
+ end
321
+ end
@@ -0,0 +1,23 @@
1
+ module SurgeAPI
2
+ module Models
3
+ type toll_free_campaign_retrieve_params =
4
+ { campaign_id: String } & SurgeAPI::Internal::Type::request_parameters
5
+
6
+ class TollFreeCampaignRetrieveParams < SurgeAPI::Internal::Type::BaseModel
7
+ extend SurgeAPI::Internal::Type::RequestParameters::Converter
8
+ include SurgeAPI::Internal::Type::RequestParameters
9
+
10
+ attr_accessor campaign_id: String
11
+
12
+ def initialize: (
13
+ campaign_id: String,
14
+ ?request_options: SurgeAPI::request_opts
15
+ ) -> void
16
+
17
+ def to_hash: -> {
18
+ campaign_id: String,
19
+ request_options: SurgeAPI::RequestOptions
20
+ }
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,332 @@
1
+ module SurgeAPI
2
+ module Models
3
+ type toll_free_campaign_update_params =
4
+ {
5
+ consent_flows: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::consent_flow],
6
+ description: String,
7
+ includes: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::include_],
8
+ message_samples: ::Array[String],
9
+ privacy_policy_url: String,
10
+ terms_and_conditions_url: String,
11
+ use_cases: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::use_case]
12
+ }
13
+
14
+ class TollFreeCampaignUpdateParams < SurgeAPI::Internal::Type::BaseModel
15
+ attr_reader consent_flows: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::consent_flow]?
16
+
17
+ def consent_flows=: (
18
+ ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::consent_flow]
19
+ ) -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::consent_flow]
20
+
21
+ attr_reader description: String?
22
+
23
+ def description=: (String) -> String
24
+
25
+ attr_reader includes: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::include_]?
26
+
27
+ def includes=: (
28
+ ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::include_]
29
+ ) -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::include_]
30
+
31
+ attr_reader message_samples: ::Array[String]?
32
+
33
+ def message_samples=: (::Array[String]) -> ::Array[String]
34
+
35
+ attr_reader privacy_policy_url: String?
36
+
37
+ def privacy_policy_url=: (String) -> String
38
+
39
+ attr_reader terms_and_conditions_url: String?
40
+
41
+ def terms_and_conditions_url=: (String) -> String
42
+
43
+ attr_reader use_cases: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::use_case]?
44
+
45
+ def use_cases=: (
46
+ ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::use_case]
47
+ ) -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::use_case]
48
+
49
+ def initialize: (
50
+ ?consent_flows: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::consent_flow],
51
+ ?description: String,
52
+ ?includes: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::include_],
53
+ ?message_samples: ::Array[String],
54
+ ?privacy_policy_url: String,
55
+ ?terms_and_conditions_url: String,
56
+ ?use_cases: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::use_case]
57
+ ) -> void
58
+
59
+ def to_hash: -> {
60
+ consent_flows: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::consent_flow],
61
+ description: String,
62
+ includes: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::include_],
63
+ message_samples: ::Array[String],
64
+ privacy_policy_url: String,
65
+ terms_and_conditions_url: String,
66
+ use_cases: ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::use_case]
67
+ }
68
+
69
+ type consent_flow =
70
+ SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0
71
+ | SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1
72
+ | SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2
73
+ | SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3
74
+
75
+ module ConsentFlow
76
+ extend SurgeAPI::Internal::Type::Union
77
+
78
+ type union_member0 =
79
+ {
80
+ script: String,
81
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0::type_
82
+ }
83
+
84
+ class UnionMember0 < SurgeAPI::Internal::Type::BaseModel
85
+ attr_accessor script: String
86
+
87
+ attr_accessor type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0::type_
88
+
89
+ def initialize: (
90
+ script: String,
91
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0::type_
92
+ ) -> void
93
+
94
+ def to_hash: -> {
95
+ script: String,
96
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0::type_
97
+ }
98
+
99
+ type type_ = :verbal
100
+
101
+ module Type
102
+ extend SurgeAPI::Internal::Type::Enum
103
+
104
+ VERBAL: :verbal
105
+
106
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0::type_]
107
+ end
108
+ end
109
+
110
+ type union_member1 =
111
+ {
112
+ owner: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::owner,
113
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::type_,
114
+ form_url: String,
115
+ screenshot: SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot
116
+ }
117
+
118
+ class UnionMember1 < SurgeAPI::Internal::Type::BaseModel
119
+ attr_accessor owner: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::owner
120
+
121
+ attr_accessor type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::type_
122
+
123
+ attr_reader form_url: String?
124
+
125
+ def form_url=: (String) -> String
126
+
127
+ attr_reader screenshot: SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot?
128
+
129
+ def screenshot=: (
130
+ SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot
131
+ ) -> SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot
132
+
133
+ def initialize: (
134
+ owner: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::owner,
135
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::type_,
136
+ ?form_url: String,
137
+ ?screenshot: SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot
138
+ ) -> void
139
+
140
+ def to_hash: -> {
141
+ owner: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::owner,
142
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::type_,
143
+ form_url: String,
144
+ screenshot: SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot
145
+ }
146
+
147
+ type owner = :brand | :platform
148
+
149
+ module Owner
150
+ extend SurgeAPI::Internal::Type::Enum
151
+
152
+ BRAND: :brand
153
+ PLATFORM: :platform
154
+
155
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::owner]
156
+ end
157
+
158
+ type type_ = :web_form
159
+
160
+ module Type
161
+ extend SurgeAPI::Internal::Type::Enum
162
+
163
+ WEB_FORM: :web_form
164
+
165
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::type_]
166
+ end
167
+
168
+ type screenshot =
169
+ {
170
+ reason: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot::reason,
171
+ urls: ::Array[String],
172
+ reason_other: String
173
+ }
174
+
175
+ class Screenshot < SurgeAPI::Internal::Type::BaseModel
176
+ attr_accessor reason: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot::reason
177
+
178
+ attr_accessor urls: ::Array[String]
179
+
180
+ attr_reader reason_other: String?
181
+
182
+ def reason_other=: (String) -> String
183
+
184
+ def initialize: (
185
+ reason: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot::reason,
186
+ urls: ::Array[String],
187
+ ?reason_other: String
188
+ ) -> void
189
+
190
+ def to_hash: -> {
191
+ reason: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot::reason,
192
+ urls: ::Array[String],
193
+ reason_other: String
194
+ }
195
+
196
+ type reason = :behind_login | :under_construction | :other
197
+
198
+ module Reason
199
+ extend SurgeAPI::Internal::Type::Enum
200
+
201
+ BEHIND_LOGIN: :behind_login
202
+ UNDER_CONSTRUCTION: :under_construction
203
+ OTHER: :other
204
+
205
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot::reason]
206
+ end
207
+ end
208
+ end
209
+
210
+ type union_member2 =
211
+ {
212
+ file_urls: ::Array[String],
213
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2::type_,
214
+ keywords: ::Array[String]
215
+ }
216
+
217
+ class UnionMember2 < SurgeAPI::Internal::Type::BaseModel
218
+ attr_accessor file_urls: ::Array[String]
219
+
220
+ attr_accessor type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2::type_
221
+
222
+ attr_reader keywords: ::Array[String]?
223
+
224
+ def keywords=: (::Array[String]) -> ::Array[String]
225
+
226
+ def initialize: (
227
+ file_urls: ::Array[String],
228
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2::type_,
229
+ ?keywords: ::Array[String]
230
+ ) -> void
231
+
232
+ def to_hash: -> {
233
+ file_urls: ::Array[String],
234
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2::type_,
235
+ keywords: ::Array[String]
236
+ }
237
+
238
+ type type_ = :text
239
+
240
+ module Type
241
+ extend SurgeAPI::Internal::Type::Enum
242
+
243
+ TEXT: :text
244
+
245
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2::type_]
246
+ end
247
+ end
248
+
249
+ type union_member3 =
250
+ {
251
+ file_urls: ::Array[String],
252
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3::type_
253
+ }
254
+
255
+ class UnionMember3 < SurgeAPI::Internal::Type::BaseModel
256
+ attr_accessor file_urls: ::Array[String]
257
+
258
+ attr_accessor type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3::type_
259
+
260
+ def initialize: (
261
+ file_urls: ::Array[String],
262
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3::type_
263
+ ) -> void
264
+
265
+ def to_hash: -> {
266
+ file_urls: ::Array[String],
267
+ type: SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3::type_
268
+ }
269
+
270
+ type type_ = :paper_form
271
+
272
+ module Type
273
+ extend SurgeAPI::Internal::Type::Enum
274
+
275
+ PAPER_FORM: :paper_form
276
+
277
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3::type_]
278
+ end
279
+ end
280
+
281
+ def self?.variants: -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::consent_flow]
282
+ end
283
+
284
+ type include_ = :age_gated
285
+
286
+ module Include
287
+ extend SurgeAPI::Internal::Type::Enum
288
+
289
+ AGE_GATED: :age_gated
290
+
291
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::include_]
292
+ end
293
+
294
+ type use_case =
295
+ :two_factor_authentication
296
+ | :account_notification
297
+ | :customer_care
298
+ | :charity
299
+ | :delivery_notification
300
+ | :fraud_alert
301
+ | :event
302
+ | :higher_education
303
+ | :k12_education
304
+ | :marketing
305
+ | :polling_voting
306
+ | :political
307
+ | :public_service_announcement
308
+ | :security_alert
309
+
310
+ module UseCase
311
+ extend SurgeAPI::Internal::Type::Enum
312
+
313
+ TWO_FACTOR_AUTHENTICATION: :two_factor_authentication
314
+ ACCOUNT_NOTIFICATION: :account_notification
315
+ CUSTOMER_CARE: :customer_care
316
+ CHARITY: :charity
317
+ DELIVERY_NOTIFICATION: :delivery_notification
318
+ FRAUD_ALERT: :fraud_alert
319
+ EVENT: :event
320
+ HIGHER_EDUCATION: :higher_education
321
+ K12_EDUCATION: :k12_education
322
+ MARKETING: :marketing
323
+ POLLING_VOTING: :polling_voting
324
+ POLITICAL: :political
325
+ PUBLIC_SERVICE_ANNOUNCEMENT: :public_service_announcement
326
+ SECURITY_ALERT: :security_alert
327
+
328
+ def self?.values: -> ::Array[SurgeAPI::Models::TollFreeCampaignUpdateParams::use_case]
329
+ end
330
+ end
331
+ end
332
+ end
@@ -3,6 +3,9 @@ module SurgeAPI
3
3
  type unwrap_webhook_event =
4
4
  SurgeAPI::CallEndedWebhookEvent
5
5
  | SurgeAPI::CampaignApprovedWebhookEvent
6
+ | SurgeAPI::CampaignRejectedWebhookEvent
7
+ | SurgeAPI::CampaignSubmittedWebhookEvent
8
+ | SurgeAPI::CampaignWarningWebhookEvent
6
9
  | SurgeAPI::ContactOptedInWebhookEvent
7
10
  | SurgeAPI::ContactOptedOutWebhookEvent
8
11
  | SurgeAPI::ConversationCreatedWebhookEvent
@@ -12,6 +15,7 @@ module SurgeAPI
12
15
  | SurgeAPI::MessageReceivedWebhookEvent
13
16
  | SurgeAPI::MessageSentWebhookEvent
14
17
  | SurgeAPI::PhoneNumberAttachedToCampaignWebhookEvent
18
+ | SurgeAPI::PhoneNumberImportedWebhookEvent
15
19
  | SurgeAPI::RecordingCompletedWebhookEvent
16
20
  | SurgeAPI::VoicemailReceivedWebhookEvent
17
21