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,318 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class PhoneNumberImportedWebhookEvent < SurgeAPI::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ SurgeAPI::PhoneNumberImportedWebhookEvent,
10
+ SurgeAPI::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The ID of the account in which this event occurred
15
+ sig { returns(String) }
16
+ attr_accessor :account_id
17
+
18
+ # The data associated with the event
19
+ sig { returns(SurgeAPI::PhoneNumberImportedWebhookEvent::Data) }
20
+ attr_reader :data
21
+
22
+ sig do
23
+ params(
24
+ data: SurgeAPI::PhoneNumberImportedWebhookEvent::Data::OrHash
25
+ ).void
26
+ end
27
+ attr_writer :data
28
+
29
+ # The timestamp when this event occurred, in ISO8601 format
30
+ sig { returns(Time) }
31
+ attr_accessor :timestamp
32
+
33
+ # The type of the event. Always `phone_number.imported` for this event.
34
+ sig { returns(Symbol) }
35
+ attr_accessor :type
36
+
37
+ sig do
38
+ params(
39
+ account_id: String,
40
+ data: SurgeAPI::PhoneNumberImportedWebhookEvent::Data::OrHash,
41
+ timestamp: Time,
42
+ type: Symbol
43
+ ).returns(T.attached_class)
44
+ end
45
+ def self.new(
46
+ # The ID of the account in which this event occurred
47
+ account_id:,
48
+ # The data associated with the event
49
+ data:,
50
+ # The timestamp when this event occurred, in ISO8601 format
51
+ timestamp:,
52
+ # The type of the event. Always `phone_number.imported` for this event.
53
+ type: :"phone_number.imported"
54
+ )
55
+ end
56
+
57
+ sig do
58
+ override.returns(
59
+ {
60
+ account_id: String,
61
+ data: SurgeAPI::PhoneNumberImportedWebhookEvent::Data,
62
+ timestamp: Time,
63
+ type: Symbol
64
+ }
65
+ )
66
+ end
67
+ def to_hash
68
+ end
69
+
70
+ class Data < SurgeAPI::Internal::Type::BaseModel
71
+ OrHash =
72
+ T.type_alias do
73
+ T.any(
74
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data,
75
+ SurgeAPI::Internal::AnyHash
76
+ )
77
+ end
78
+
79
+ # The unique identifier for the phone number
80
+ sig { returns(String) }
81
+ attr_accessor :id
82
+
83
+ # Campaign attachment details for a domestic local phone number
84
+ sig do
85
+ returns(
86
+ T.nilable(SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign)
87
+ )
88
+ end
89
+ attr_reader :campaign
90
+
91
+ sig do
92
+ params(
93
+ campaign:
94
+ T.nilable(
95
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::OrHash
96
+ )
97
+ ).void
98
+ end
99
+ attr_writer :campaign
100
+
101
+ # Deprecated. The unique identifier of the campaign this phone number is attached
102
+ # to
103
+ sig { returns(T.nilable(String)) }
104
+ attr_accessor :campaign_id
105
+
106
+ # Set of key-value pairs that will be stored with the object.
107
+ sig { returns(T::Hash[Symbol, String]) }
108
+ attr_accessor :metadata
109
+
110
+ # A human-readable name for the phone number
111
+ sig { returns(T.nilable(String)) }
112
+ attr_accessor :name
113
+
114
+ # The phone number in E.164 format
115
+ sig { returns(String) }
116
+ attr_accessor :number
117
+
118
+ # Whether the phone number is local, toll-free, or short code
119
+ sig do
120
+ returns(
121
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Type::TaggedSymbol
122
+ )
123
+ end
124
+ attr_accessor :type
125
+
126
+ # The data associated with the event
127
+ sig do
128
+ params(
129
+ id: String,
130
+ campaign:
131
+ T.nilable(
132
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::OrHash
133
+ ),
134
+ campaign_id: T.nilable(String),
135
+ metadata: T::Hash[Symbol, String],
136
+ name: T.nilable(String),
137
+ number: String,
138
+ type:
139
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Type::OrSymbol
140
+ ).returns(T.attached_class)
141
+ end
142
+ def self.new(
143
+ # The unique identifier for the phone number
144
+ id:,
145
+ # Campaign attachment details for a domestic local phone number
146
+ campaign:,
147
+ # Deprecated. The unique identifier of the campaign this phone number is attached
148
+ # to
149
+ campaign_id:,
150
+ # Set of key-value pairs that will be stored with the object.
151
+ metadata:,
152
+ # A human-readable name for the phone number
153
+ name:,
154
+ # The phone number in E.164 format
155
+ number:,
156
+ # Whether the phone number is local, toll-free, or short code
157
+ type:
158
+ )
159
+ end
160
+
161
+ sig do
162
+ override.returns(
163
+ {
164
+ id: String,
165
+ campaign:
166
+ T.nilable(
167
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign
168
+ ),
169
+ campaign_id: T.nilable(String),
170
+ metadata: T::Hash[Symbol, String],
171
+ name: T.nilable(String),
172
+ number: String,
173
+ type:
174
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Type::TaggedSymbol
175
+ }
176
+ )
177
+ end
178
+ def to_hash
179
+ end
180
+
181
+ class Campaign < SurgeAPI::Internal::Type::BaseModel
182
+ OrHash =
183
+ T.type_alias do
184
+ T.any(
185
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign,
186
+ SurgeAPI::Internal::AnyHash
187
+ )
188
+ end
189
+
190
+ # The unique identifier of the campaign this phone number is attached to
191
+ sig { returns(String) }
192
+ attr_accessor :id
193
+
194
+ # The current campaign attachment status for this phone number.
195
+ sig do
196
+ returns(
197
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus::TaggedSymbol
198
+ )
199
+ end
200
+ attr_accessor :attachment_status
201
+
202
+ # Campaign attachment details for a domestic local phone number
203
+ sig do
204
+ params(
205
+ id: String,
206
+ attachment_status:
207
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus::OrSymbol
208
+ ).returns(T.attached_class)
209
+ end
210
+ def self.new(
211
+ # The unique identifier of the campaign this phone number is attached to
212
+ id:,
213
+ # The current campaign attachment status for this phone number.
214
+ attachment_status:
215
+ )
216
+ end
217
+
218
+ sig do
219
+ override.returns(
220
+ {
221
+ id: String,
222
+ attachment_status:
223
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus::TaggedSymbol
224
+ }
225
+ )
226
+ end
227
+ def to_hash
228
+ end
229
+
230
+ # The current campaign attachment status for this phone number.
231
+ module AttachmentStatus
232
+ extend SurgeAPI::Internal::Type::Enum
233
+
234
+ TaggedSymbol =
235
+ T.type_alias do
236
+ T.all(
237
+ Symbol,
238
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus
239
+ )
240
+ end
241
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
242
+
243
+ ATTACHED =
244
+ T.let(
245
+ :attached,
246
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus::TaggedSymbol
247
+ )
248
+ ATTACHMENT_PENDING =
249
+ T.let(
250
+ :attachment_pending,
251
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus::TaggedSymbol
252
+ )
253
+ DETACHED =
254
+ T.let(
255
+ :detached,
256
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus::TaggedSymbol
257
+ )
258
+ DETACHMENT_PENDING =
259
+ T.let(
260
+ :detachment_pending,
261
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus::TaggedSymbol
262
+ )
263
+
264
+ sig do
265
+ override.returns(
266
+ T::Array[
267
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus::TaggedSymbol
268
+ ]
269
+ )
270
+ end
271
+ def self.values
272
+ end
273
+ end
274
+ end
275
+
276
+ # Whether the phone number is local, toll-free, or short code
277
+ module Type
278
+ extend SurgeAPI::Internal::Type::Enum
279
+
280
+ TaggedSymbol =
281
+ T.type_alias do
282
+ T.all(
283
+ Symbol,
284
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Type
285
+ )
286
+ end
287
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
288
+
289
+ LOCAL =
290
+ T.let(
291
+ :local,
292
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Type::TaggedSymbol
293
+ )
294
+ SHORT_CODE =
295
+ T.let(
296
+ :short_code,
297
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Type::TaggedSymbol
298
+ )
299
+ TOLL_FREE =
300
+ T.let(
301
+ :toll_free,
302
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Type::TaggedSymbol
303
+ )
304
+
305
+ sig do
306
+ override.returns(
307
+ T::Array[
308
+ SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Type::TaggedSymbol
309
+ ]
310
+ )
311
+ end
312
+ def self.values
313
+ end
314
+ end
315
+ end
316
+ end
317
+ end
318
+ end
@@ -42,6 +42,13 @@ module SurgeAPI
42
42
  sig { params(longitude: Float).void }
43
43
  attr_writer :longitude
44
44
 
45
+ # Set of key-value pairs that will be stored with the object.
46
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
47
+ attr_reader :metadata
48
+
49
+ sig { params(metadata: T::Hash[Symbol, String]).void }
50
+ attr_writer :metadata
51
+
45
52
  # A human-readable name for the phone number. If not provided, defaults to the
46
53
  # formatted phone number.
47
54
  sig { returns(T.nilable(String)) }
@@ -76,6 +83,7 @@ module SurgeAPI
76
83
  area_code: String,
77
84
  latitude: Float,
78
85
  longitude: Float,
86
+ metadata: T::Hash[Symbol, String],
79
87
  name: String,
80
88
  phone_number: String,
81
89
  type: SurgeAPI::PhoneNumberPurchaseParams::Type::OrSymbol,
@@ -94,6 +102,8 @@ module SurgeAPI
94
102
  # Longitude to search for nearby phone numbers. Must be used with latitude. If
95
103
  # provided without type, type will be inferred as 'local'.
96
104
  longitude: nil,
105
+ # Set of key-value pairs that will be stored with the object.
106
+ metadata: nil,
97
107
  # A human-readable name for the phone number. If not provided, defaults to the
98
108
  # formatted phone number.
99
109
  name: nil,
@@ -114,6 +124,7 @@ module SurgeAPI
114
124
  area_code: String,
115
125
  latitude: Float,
116
126
  longitude: Float,
127
+ metadata: T::Hash[Symbol, String],
117
128
  name: String,
118
129
  phone_number: String,
119
130
  type: SurgeAPI::PhoneNumberPurchaseParams::Type::OrSymbol,
@@ -22,6 +22,13 @@ module SurgeAPI
22
22
  sig { params(campaign_id: String).void }
23
23
  attr_writer :campaign_id
24
24
 
25
+ # Set of key-value pairs that will be stored with the object.
26
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
27
+ attr_reader :metadata
28
+
29
+ sig { params(metadata: T::Hash[Symbol, String]).void }
30
+ attr_writer :metadata
31
+
25
32
  # A human-readable name for the phone number.
26
33
  sig { returns(T.nilable(String)) }
27
34
  attr_reader :name
@@ -33,6 +40,7 @@ module SurgeAPI
33
40
  params(
34
41
  id: String,
35
42
  campaign_id: String,
43
+ metadata: T::Hash[Symbol, String],
36
44
  name: String,
37
45
  request_options: SurgeAPI::RequestOptions::OrHash
38
46
  ).returns(T.attached_class)
@@ -42,6 +50,8 @@ module SurgeAPI
42
50
  id:,
43
51
  # Campaign ID to attach this number to (`cpn_...`).
44
52
  campaign_id: nil,
53
+ # Set of key-value pairs that will be stored with the object.
54
+ metadata: nil,
45
55
  # A human-readable name for the phone number.
46
56
  name: nil,
47
57
  request_options: {}
@@ -53,6 +63,7 @@ module SurgeAPI
53
63
  {
54
64
  id: String,
55
65
  campaign_id: String,
66
+ metadata: T::Hash[Symbol, String],
56
67
  name: String,
57
68
  request_options: SurgeAPI::RequestOptions
58
69
  }
@@ -0,0 +1,230 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class TollFreeCampaign < SurgeAPI::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(SurgeAPI::TollFreeCampaign, SurgeAPI::Internal::AnyHash)
9
+ end
10
+
11
+ # The toll-free campaign ID
12
+ sig { returns(String) }
13
+ attr_accessor :id
14
+
15
+ sig { returns(T::Array[SurgeAPI::TollFreeCampaignConsentFlow::Variants]) }
16
+ attr_accessor :consent_flows
17
+
18
+ sig { returns(T.nilable(String)) }
19
+ attr_accessor :description
20
+
21
+ sig do
22
+ returns(T::Array[SurgeAPI::TollFreeCampaign::Include::TaggedSymbol])
23
+ end
24
+ attr_accessor :includes
25
+
26
+ sig { returns(T::Array[String]) }
27
+ attr_accessor :message_samples
28
+
29
+ # The toll-free phone number ID
30
+ sig { returns(String) }
31
+ attr_accessor :phone_number_id
32
+
33
+ sig { returns(T.nilable(String)) }
34
+ attr_accessor :privacy_policy_url
35
+
36
+ # The current status of the toll-free campaign.
37
+ sig { returns(SurgeAPI::TollFreeCampaign::Status::TaggedSymbol) }
38
+ attr_accessor :status
39
+
40
+ sig { returns(T.nilable(String)) }
41
+ attr_accessor :terms_and_conditions_url
42
+
43
+ sig do
44
+ returns(T::Array[SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol])
45
+ end
46
+ attr_accessor :use_cases
47
+
48
+ # A toll-free campaign registration for a phone number.
49
+ sig do
50
+ params(
51
+ id: String,
52
+ consent_flows:
53
+ T::Array[
54
+ T.any(
55
+ SurgeAPI::TollFreeCampaignConsentFlow::UnionMember0::OrHash,
56
+ SurgeAPI::TollFreeCampaignConsentFlow::UnionMember1::OrHash,
57
+ SurgeAPI::TollFreeCampaignConsentFlow::UnionMember2::OrHash,
58
+ SurgeAPI::TollFreeCampaignConsentFlow::UnionMember3::OrHash,
59
+ SurgeAPI::TollFreeCampaignConsentFlow::Type::OrHash
60
+ )
61
+ ],
62
+ description: T.nilable(String),
63
+ includes: T::Array[SurgeAPI::TollFreeCampaign::Include::OrSymbol],
64
+ message_samples: T::Array[String],
65
+ phone_number_id: String,
66
+ privacy_policy_url: T.nilable(String),
67
+ status: SurgeAPI::TollFreeCampaign::Status::OrSymbol,
68
+ terms_and_conditions_url: T.nilable(String),
69
+ use_cases: T::Array[SurgeAPI::TollFreeCampaign::UseCase::OrSymbol]
70
+ ).returns(T.attached_class)
71
+ end
72
+ def self.new(
73
+ # The toll-free campaign ID
74
+ id:,
75
+ consent_flows:,
76
+ description:,
77
+ includes:,
78
+ message_samples:,
79
+ # The toll-free phone number ID
80
+ phone_number_id:,
81
+ privacy_policy_url:,
82
+ # The current status of the toll-free campaign.
83
+ status:,
84
+ terms_and_conditions_url:,
85
+ use_cases:
86
+ )
87
+ end
88
+
89
+ sig do
90
+ override.returns(
91
+ {
92
+ id: String,
93
+ consent_flows:
94
+ T::Array[SurgeAPI::TollFreeCampaignConsentFlow::Variants],
95
+ description: T.nilable(String),
96
+ includes:
97
+ T::Array[SurgeAPI::TollFreeCampaign::Include::TaggedSymbol],
98
+ message_samples: T::Array[String],
99
+ phone_number_id: String,
100
+ privacy_policy_url: T.nilable(String),
101
+ status: SurgeAPI::TollFreeCampaign::Status::TaggedSymbol,
102
+ terms_and_conditions_url: T.nilable(String),
103
+ use_cases:
104
+ T::Array[SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol]
105
+ }
106
+ )
107
+ end
108
+ def to_hash
109
+ end
110
+
111
+ module Include
112
+ extend SurgeAPI::Internal::Type::Enum
113
+
114
+ TaggedSymbol =
115
+ T.type_alias { T.all(Symbol, SurgeAPI::TollFreeCampaign::Include) }
116
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
117
+
118
+ AGE_GATED =
119
+ T.let(:age_gated, SurgeAPI::TollFreeCampaign::Include::TaggedSymbol)
120
+
121
+ sig do
122
+ override.returns(
123
+ T::Array[SurgeAPI::TollFreeCampaign::Include::TaggedSymbol]
124
+ )
125
+ end
126
+ def self.values
127
+ end
128
+ end
129
+
130
+ # The current status of the toll-free campaign.
131
+ module Status
132
+ extend SurgeAPI::Internal::Type::Enum
133
+
134
+ TaggedSymbol =
135
+ T.type_alias { T.all(Symbol, SurgeAPI::TollFreeCampaign::Status) }
136
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
137
+
138
+ ACTIVE =
139
+ T.let(:active, SurgeAPI::TollFreeCampaign::Status::TaggedSymbol)
140
+ CANCELED =
141
+ T.let(:canceled, SurgeAPI::TollFreeCampaign::Status::TaggedSymbol)
142
+ CREATED =
143
+ T.let(:created, SurgeAPI::TollFreeCampaign::Status::TaggedSymbol)
144
+ IN_REVIEW =
145
+ T.let(:in_review, SurgeAPI::TollFreeCampaign::Status::TaggedSymbol)
146
+ REJECTED =
147
+ T.let(:rejected, SurgeAPI::TollFreeCampaign::Status::TaggedSymbol)
148
+
149
+ sig do
150
+ override.returns(
151
+ T::Array[SurgeAPI::TollFreeCampaign::Status::TaggedSymbol]
152
+ )
153
+ end
154
+ def self.values
155
+ end
156
+ end
157
+
158
+ module UseCase
159
+ extend SurgeAPI::Internal::Type::Enum
160
+
161
+ TaggedSymbol =
162
+ T.type_alias { T.all(Symbol, SurgeAPI::TollFreeCampaign::UseCase) }
163
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
164
+
165
+ TWO_FACTOR_AUTHENTICATION =
166
+ T.let(
167
+ :two_factor_authentication,
168
+ SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol
169
+ )
170
+ ACCOUNT_NOTIFICATION =
171
+ T.let(
172
+ :account_notification,
173
+ SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol
174
+ )
175
+ CUSTOMER_CARE =
176
+ T.let(
177
+ :customer_care,
178
+ SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol
179
+ )
180
+ CHARITY =
181
+ T.let(:charity, SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol)
182
+ DELIVERY_NOTIFICATION =
183
+ T.let(
184
+ :delivery_notification,
185
+ SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol
186
+ )
187
+ FRAUD_ALERT =
188
+ T.let(:fraud_alert, SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol)
189
+ EVENT = T.let(:event, SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol)
190
+ HIGHER_EDUCATION =
191
+ T.let(
192
+ :higher_education,
193
+ SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol
194
+ )
195
+ K12_EDUCATION =
196
+ T.let(
197
+ :k12_education,
198
+ SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol
199
+ )
200
+ MARKETING =
201
+ T.let(:marketing, SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol)
202
+ POLLING_VOTING =
203
+ T.let(
204
+ :polling_voting,
205
+ SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol
206
+ )
207
+ POLITICAL =
208
+ T.let(:political, SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol)
209
+ PUBLIC_SERVICE_ANNOUNCEMENT =
210
+ T.let(
211
+ :public_service_announcement,
212
+ SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol
213
+ )
214
+ SECURITY_ALERT =
215
+ T.let(
216
+ :security_alert,
217
+ SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol
218
+ )
219
+
220
+ sig do
221
+ override.returns(
222
+ T::Array[SurgeAPI::TollFreeCampaign::UseCase::TaggedSymbol]
223
+ )
224
+ end
225
+ def self.values
226
+ end
227
+ end
228
+ end
229
+ end
230
+ end