surge_api 0.24.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 (109) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -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/call_ended_webhook_event.rb +8 -3
  7. data/lib/surge_api/models/campaign.rb +15 -7
  8. data/lib/surge_api/models/campaign_approved_webhook_event.rb +9 -1
  9. data/lib/surge_api/models/campaign_params.rb +6 -6
  10. data/lib/surge_api/models/campaign_rejected_webhook_event.rb +135 -0
  11. data/lib/surge_api/models/campaign_submitted_webhook_event.rb +74 -0
  12. data/lib/surge_api/models/campaign_update_params.rb +188 -1
  13. data/lib/surge_api/models/campaign_warning_webhook_event.rb +134 -0
  14. data/lib/surge_api/models/message.rb +18 -2
  15. data/lib/surge_api/models/message_delivered_webhook_event.rb +9 -1
  16. data/lib/surge_api/models/message_failed_webhook_event.rb +5 -4
  17. data/lib/surge_api/models/message_received_webhook_event.rb +9 -1
  18. data/lib/surge_api/models/message_sent_webhook_event.rb +9 -1
  19. data/lib/surge_api/models/phone_number.rb +9 -1
  20. data/lib/surge_api/models/phone_number_attached_to_campaign_webhook_event.rb +9 -1
  21. data/lib/surge_api/models/phone_number_imported_webhook_event.rb +9 -1
  22. data/lib/surge_api/models/phone_number_purchase_params.rb +9 -1
  23. data/lib/surge_api/models/phone_number_update_params.rb +9 -1
  24. data/lib/surge_api/models/toll_free_campaign.rb +132 -0
  25. data/lib/surge_api/models/toll_free_campaign_consent_flow.rb +176 -0
  26. data/lib/surge_api/models/toll_free_campaign_create_params.rb +22 -0
  27. data/lib/surge_api/models/toll_free_campaign_list_params.rb +42 -0
  28. data/lib/surge_api/models/toll_free_campaign_params.rb +286 -0
  29. data/lib/surge_api/models/toll_free_campaign_retrieve_params.rb +22 -0
  30. data/lib/surge_api/models/toll_free_campaign_update_params.rb +278 -0
  31. data/lib/surge_api/models/unwrap_webhook_event.rb +7 -1
  32. data/lib/surge_api/models/user_create_token_params.rb +15 -1
  33. data/lib/surge_api/models.rb +20 -0
  34. data/lib/surge_api/resources/accounts.rb +2 -2
  35. data/lib/surge_api/resources/campaigns.rb +26 -8
  36. data/lib/surge_api/resources/phone_numbers.rb +6 -2
  37. data/lib/surge_api/resources/toll_free_campaigns.rb +140 -0
  38. data/lib/surge_api/resources/users.rb +6 -1
  39. data/lib/surge_api/resources/webhooks.rb +1 -1
  40. data/lib/surge_api/version.rb +1 -1
  41. data/lib/surge_api.rb +11 -0
  42. data/rbi/surge_api/client.rbi +3 -0
  43. data/rbi/surge_api/models/call_ended_webhook_event.rbi +6 -3
  44. data/rbi/surge_api/models/campaign.rbi +17 -9
  45. data/rbi/surge_api/models/campaign_approved_webhook_event.rbi +8 -0
  46. data/rbi/surge_api/models/campaign_params.rbi +9 -9
  47. data/rbi/surge_api/models/campaign_rejected_webhook_event.rbi +269 -0
  48. data/rbi/surge_api/models/campaign_submitted_webhook_event.rbi +149 -0
  49. data/rbi/surge_api/models/campaign_update_params.rbi +378 -1
  50. data/rbi/surge_api/models/campaign_warning_webhook_event.rbi +259 -0
  51. data/rbi/surge_api/models/message.rbi +16 -0
  52. data/rbi/surge_api/models/message_delivered_webhook_event.rbi +8 -0
  53. data/rbi/surge_api/models/message_failed_webhook_event.rbi +7 -5
  54. data/rbi/surge_api/models/message_received_webhook_event.rbi +8 -0
  55. data/rbi/surge_api/models/message_sent_webhook_event.rbi +8 -0
  56. data/rbi/surge_api/models/phone_number.rbi +8 -0
  57. data/rbi/surge_api/models/phone_number_attached_to_campaign_webhook_event.rbi +8 -0
  58. data/rbi/surge_api/models/phone_number_imported_webhook_event.rbi +8 -0
  59. data/rbi/surge_api/models/phone_number_purchase_params.rbi +11 -0
  60. data/rbi/surge_api/models/phone_number_update_params.rbi +11 -0
  61. data/rbi/surge_api/models/toll_free_campaign.rbi +230 -0
  62. data/rbi/surge_api/models/toll_free_campaign_consent_flow.rbi +476 -0
  63. data/rbi/surge_api/models/toll_free_campaign_create_params.rbi +43 -0
  64. data/rbi/surge_api/models/toll_free_campaign_list_params.rbi +70 -0
  65. data/rbi/surge_api/models/toll_free_campaign_params.rbi +711 -0
  66. data/rbi/surge_api/models/toll_free_campaign_retrieve_params.rbi +43 -0
  67. data/rbi/surge_api/models/toll_free_campaign_update_params.rbi +760 -0
  68. data/rbi/surge_api/models/unwrap_webhook_event.rbi +3 -0
  69. data/rbi/surge_api/models/user_create_token_params.rbi +17 -0
  70. data/rbi/surge_api/models.rbi +22 -0
  71. data/rbi/surge_api/resources/accounts.rbi +2 -2
  72. data/rbi/surge_api/resources/campaigns.rbi +94 -12
  73. data/rbi/surge_api/resources/phone_numbers.rbi +6 -0
  74. data/rbi/surge_api/resources/toll_free_campaigns.rbi +129 -0
  75. data/rbi/surge_api/resources/users.rbi +6 -0
  76. data/rbi/surge_api/resources/webhooks.rbi +3 -0
  77. data/sig/surge_api/client.rbs +2 -0
  78. data/sig/surge_api/models/campaign.rbs +5 -0
  79. data/sig/surge_api/models/campaign_approved_webhook_event.rbs +5 -0
  80. data/sig/surge_api/models/campaign_rejected_webhook_event.rbs +115 -0
  81. data/sig/surge_api/models/campaign_submitted_webhook_event.rbs +67 -0
  82. data/sig/surge_api/models/campaign_update_params.rbs +128 -2
  83. data/sig/surge_api/models/campaign_warning_webhook_event.rbs +114 -0
  84. data/sig/surge_api/models/message.rbs +10 -0
  85. data/sig/surge_api/models/message_delivered_webhook_event.rbs +5 -0
  86. data/sig/surge_api/models/message_failed_webhook_event.rbs +4 -4
  87. data/sig/surge_api/models/message_received_webhook_event.rbs +5 -0
  88. data/sig/surge_api/models/message_sent_webhook_event.rbs +5 -0
  89. data/sig/surge_api/models/phone_number.rbs +5 -0
  90. data/sig/surge_api/models/phone_number_attached_to_campaign_webhook_event.rbs +5 -0
  91. data/sig/surge_api/models/phone_number_imported_webhook_event.rbs +5 -0
  92. data/sig/surge_api/models/phone_number_purchase_params.rbs +7 -0
  93. data/sig/surge_api/models/phone_number_update_params.rbs +12 -1
  94. data/sig/surge_api/models/toll_free_campaign.rbs +126 -0
  95. data/sig/surge_api/models/toll_free_campaign_consent_flow.rbs +207 -0
  96. data/sig/surge_api/models/toll_free_campaign_create_params.rbs +25 -0
  97. data/sig/surge_api/models/toll_free_campaign_list_params.rbs +36 -0
  98. data/sig/surge_api/models/toll_free_campaign_params.rbs +321 -0
  99. data/sig/surge_api/models/toll_free_campaign_retrieve_params.rbs +23 -0
  100. data/sig/surge_api/models/toll_free_campaign_update_params.rbs +332 -0
  101. data/sig/surge_api/models/unwrap_webhook_event.rbs +3 -0
  102. data/sig/surge_api/models/user_create_token_params.rbs +7 -1
  103. data/sig/surge_api/models.rbs +20 -0
  104. data/sig/surge_api/resources/campaigns.rbs +9 -1
  105. data/sig/surge_api/resources/phone_numbers.rbs +2 -0
  106. data/sig/surge_api/resources/toll_free_campaigns.rbs +44 -0
  107. data/sig/surge_api/resources/users.rbs +1 -0
  108. data/sig/surge_api/resources/webhooks.rbs +3 -0
  109. metadata +50 -7
@@ -0,0 +1,278 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class TollFreeCampaignUpdateParams < SurgeAPI::Internal::Type::BaseModel
6
+ # @!attribute consent_flows
7
+ #
8
+ # @return [Array<SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3>, nil]
9
+ optional :consent_flows,
10
+ -> { SurgeAPI::Internal::Type::ArrayOf[union: SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow] }
11
+
12
+ # @!attribute description
13
+ # An explanation of how the toll-free number will be used.
14
+ #
15
+ # @return [String, nil]
16
+ optional :description, String
17
+
18
+ # @!attribute includes
19
+ #
20
+ # @return [Array<Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::Include>, nil]
21
+ optional :includes,
22
+ -> { SurgeAPI::Internal::Type::ArrayOf[enum: SurgeAPI::TollFreeCampaignUpdateParams::Include] }
23
+
24
+ # @!attribute message_samples
25
+ #
26
+ # @return [Array<String>, nil]
27
+ optional :message_samples, SurgeAPI::Internal::Type::ArrayOf[String]
28
+
29
+ # @!attribute privacy_policy_url
30
+ #
31
+ # @return [String, nil]
32
+ optional :privacy_policy_url, String
33
+
34
+ # @!attribute terms_and_conditions_url
35
+ #
36
+ # @return [String, nil]
37
+ optional :terms_and_conditions_url, String
38
+
39
+ # @!attribute use_cases
40
+ #
41
+ # @return [Array<Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::UseCase>, nil]
42
+ optional :use_cases,
43
+ -> { SurgeAPI::Internal::Type::ArrayOf[enum: SurgeAPI::TollFreeCampaignUpdateParams::UseCase] }
44
+
45
+ # @!method initialize(consent_flows: nil, description: nil, includes: nil, message_samples: nil, privacy_policy_url: nil, terms_and_conditions_url: nil, use_cases: nil)
46
+ # Parameters for updating a toll-free campaign.
47
+ #
48
+ # @param consent_flows [Array<SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3>]
49
+ #
50
+ # @param description [String] An explanation of how the toll-free number will be used.
51
+ #
52
+ # @param includes [Array<Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::Include>]
53
+ #
54
+ # @param message_samples [Array<String>]
55
+ #
56
+ # @param privacy_policy_url [String]
57
+ #
58
+ # @param terms_and_conditions_url [String]
59
+ #
60
+ # @param use_cases [Array<Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::UseCase>]
61
+
62
+ module ConsentFlow
63
+ extend SurgeAPI::Internal::Type::Union
64
+
65
+ variant -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0 }
66
+
67
+ variant -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1 }
68
+
69
+ variant -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2 }
70
+
71
+ variant -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3 }
72
+
73
+ class UnionMember0 < SurgeAPI::Internal::Type::BaseModel
74
+ # @!attribute script
75
+ #
76
+ # @return [String]
77
+ required :script, String
78
+
79
+ # @!attribute type
80
+ #
81
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0::Type]
82
+ required :type, enum: -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0::Type }
83
+
84
+ # @!method initialize(script:, type:)
85
+ # @param script [String]
86
+ # @param type [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0::Type]
87
+
88
+ # @see SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0#type
89
+ module Type
90
+ extend SurgeAPI::Internal::Type::Enum
91
+
92
+ VERBAL = :verbal
93
+
94
+ # @!method self.values
95
+ # @return [Array<Symbol>]
96
+ end
97
+ end
98
+
99
+ class UnionMember1 < SurgeAPI::Internal::Type::BaseModel
100
+ # @!attribute owner
101
+ #
102
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Owner]
103
+ required :owner, enum: -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Owner }
104
+
105
+ # @!attribute type
106
+ #
107
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Type]
108
+ required :type, enum: -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Type }
109
+
110
+ # @!attribute form_url
111
+ #
112
+ # @return [String, nil]
113
+ optional :form_url, String
114
+
115
+ # @!attribute screenshot
116
+ #
117
+ # @return [SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot, nil]
118
+ optional :screenshot, -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot }
119
+
120
+ # @!method initialize(owner:, type:, form_url: nil, screenshot: nil)
121
+ # @param owner [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Owner]
122
+ # @param type [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Type]
123
+ # @param form_url [String]
124
+ # @param screenshot [SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot]
125
+
126
+ # @see SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1#owner
127
+ module Owner
128
+ extend SurgeAPI::Internal::Type::Enum
129
+
130
+ BRAND = :brand
131
+ PLATFORM = :platform
132
+
133
+ # @!method self.values
134
+ # @return [Array<Symbol>]
135
+ end
136
+
137
+ # @see SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1#type
138
+ module Type
139
+ extend SurgeAPI::Internal::Type::Enum
140
+
141
+ WEB_FORM = :web_form
142
+
143
+ # @!method self.values
144
+ # @return [Array<Symbol>]
145
+ end
146
+
147
+ # @see SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1#screenshot
148
+ class Screenshot < SurgeAPI::Internal::Type::BaseModel
149
+ # @!attribute reason
150
+ #
151
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot::Reason]
152
+ required :reason,
153
+ enum: -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot::Reason }
154
+
155
+ # @!attribute urls
156
+ #
157
+ # @return [Array<String>]
158
+ required :urls, SurgeAPI::Internal::Type::ArrayOf[String]
159
+
160
+ # @!attribute reason_other
161
+ #
162
+ # @return [String, nil]
163
+ optional :reason_other, String
164
+
165
+ # @!method initialize(reason:, urls:, reason_other: nil)
166
+ # @param reason [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot::Reason]
167
+ # @param urls [Array<String>]
168
+ # @param reason_other [String]
169
+
170
+ # @see SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1::Screenshot#reason
171
+ module Reason
172
+ extend SurgeAPI::Internal::Type::Enum
173
+
174
+ BEHIND_LOGIN = :behind_login
175
+ UNDER_CONSTRUCTION = :under_construction
176
+ OTHER = :other
177
+
178
+ # @!method self.values
179
+ # @return [Array<Symbol>]
180
+ end
181
+ end
182
+ end
183
+
184
+ class UnionMember2 < SurgeAPI::Internal::Type::BaseModel
185
+ # @!attribute file_urls
186
+ #
187
+ # @return [Array<String>]
188
+ required :file_urls, SurgeAPI::Internal::Type::ArrayOf[String]
189
+
190
+ # @!attribute type
191
+ #
192
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2::Type]
193
+ required :type, enum: -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2::Type }
194
+
195
+ # @!attribute keywords
196
+ #
197
+ # @return [Array<String>, nil]
198
+ optional :keywords, SurgeAPI::Internal::Type::ArrayOf[String]
199
+
200
+ # @!method initialize(file_urls:, type:, keywords: nil)
201
+ # @param file_urls [Array<String>]
202
+ # @param type [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2::Type]
203
+ # @param keywords [Array<String>]
204
+
205
+ # @see SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2#type
206
+ module Type
207
+ extend SurgeAPI::Internal::Type::Enum
208
+
209
+ TEXT = :text
210
+
211
+ # @!method self.values
212
+ # @return [Array<Symbol>]
213
+ end
214
+ end
215
+
216
+ class UnionMember3 < SurgeAPI::Internal::Type::BaseModel
217
+ # @!attribute file_urls
218
+ #
219
+ # @return [Array<String>]
220
+ required :file_urls, SurgeAPI::Internal::Type::ArrayOf[String]
221
+
222
+ # @!attribute type
223
+ #
224
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3::Type]
225
+ required :type, enum: -> { SurgeAPI::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3::Type }
226
+
227
+ # @!method initialize(file_urls:, type:)
228
+ # @param file_urls [Array<String>]
229
+ # @param type [Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3::Type]
230
+
231
+ # @see SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3#type
232
+ module Type
233
+ extend SurgeAPI::Internal::Type::Enum
234
+
235
+ PAPER_FORM = :paper_form
236
+
237
+ # @!method self.values
238
+ # @return [Array<Symbol>]
239
+ end
240
+ end
241
+
242
+ # @!method self.variants
243
+ # @return [Array(SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3)]
244
+ end
245
+
246
+ module Include
247
+ extend SurgeAPI::Internal::Type::Enum
248
+
249
+ AGE_GATED = :age_gated
250
+
251
+ # @!method self.values
252
+ # @return [Array<Symbol>]
253
+ end
254
+
255
+ module UseCase
256
+ extend SurgeAPI::Internal::Type::Enum
257
+
258
+ TWO_FACTOR_AUTHENTICATION = :two_factor_authentication
259
+ ACCOUNT_NOTIFICATION = :account_notification
260
+ CUSTOMER_CARE = :customer_care
261
+ CHARITY = :charity
262
+ DELIVERY_NOTIFICATION = :delivery_notification
263
+ FRAUD_ALERT = :fraud_alert
264
+ EVENT = :event
265
+ HIGHER_EDUCATION = :higher_education
266
+ K12_EDUCATION = :k12_education
267
+ MARKETING = :marketing
268
+ POLLING_VOTING = :polling_voting
269
+ POLITICAL = :political
270
+ PUBLIC_SERVICE_ANNOUNCEMENT = :public_service_announcement
271
+ SECURITY_ALERT = :security_alert
272
+
273
+ # @!method self.values
274
+ # @return [Array<Symbol>]
275
+ end
276
+ end
277
+ end
278
+ end
@@ -11,6 +11,12 @@ module SurgeAPI
11
11
 
12
12
  variant :"campaign.approved", -> { SurgeAPI::CampaignApprovedWebhookEvent }
13
13
 
14
+ variant :"campaign.rejected", -> { SurgeAPI::CampaignRejectedWebhookEvent }
15
+
16
+ variant :"campaign.submitted", -> { SurgeAPI::CampaignSubmittedWebhookEvent }
17
+
18
+ variant :"campaign.warning", -> { SurgeAPI::CampaignWarningWebhookEvent }
19
+
14
20
  variant :"contact.opted_in", -> { SurgeAPI::ContactOptedInWebhookEvent }
15
21
 
16
22
  variant :"contact.opted_out", -> { SurgeAPI::ContactOptedOutWebhookEvent }
@@ -36,7 +42,7 @@ module SurgeAPI
36
42
  variant :"voicemail.received", -> { SurgeAPI::VoicemailReceivedWebhookEvent }
37
43
 
38
44
  # @!method self.variants
39
- # @return [Array(SurgeAPI::Models::CallEndedWebhookEvent, SurgeAPI::Models::CampaignApprovedWebhookEvent, SurgeAPI::Models::ContactOptedInWebhookEvent, SurgeAPI::Models::ContactOptedOutWebhookEvent, SurgeAPI::Models::ConversationCreatedWebhookEvent, SurgeAPI::Models::LinkFollowedWebhookEvent, SurgeAPI::Models::MessageDeliveredWebhookEvent, SurgeAPI::Models::MessageFailedWebhookEvent, SurgeAPI::Models::MessageReceivedWebhookEvent, SurgeAPI::Models::MessageSentWebhookEvent, SurgeAPI::Models::PhoneNumberAttachedToCampaignWebhookEvent, SurgeAPI::Models::PhoneNumberImportedWebhookEvent, SurgeAPI::Models::RecordingCompletedWebhookEvent, SurgeAPI::Models::VoicemailReceivedWebhookEvent)]
45
+ # @return [Array(SurgeAPI::Models::CallEndedWebhookEvent, SurgeAPI::Models::CampaignApprovedWebhookEvent, SurgeAPI::Models::CampaignRejectedWebhookEvent, SurgeAPI::Models::CampaignSubmittedWebhookEvent, SurgeAPI::Models::CampaignWarningWebhookEvent, SurgeAPI::Models::ContactOptedInWebhookEvent, SurgeAPI::Models::ContactOptedOutWebhookEvent, SurgeAPI::Models::ConversationCreatedWebhookEvent, SurgeAPI::Models::LinkFollowedWebhookEvent, SurgeAPI::Models::MessageDeliveredWebhookEvent, SurgeAPI::Models::MessageFailedWebhookEvent, SurgeAPI::Models::MessageReceivedWebhookEvent, SurgeAPI::Models::MessageSentWebhookEvent, SurgeAPI::Models::PhoneNumberAttachedToCampaignWebhookEvent, SurgeAPI::Models::PhoneNumberImportedWebhookEvent, SurgeAPI::Models::RecordingCompletedWebhookEvent, SurgeAPI::Models::VoicemailReceivedWebhookEvent)]
40
46
  end
41
47
  end
42
48
  end
@@ -19,11 +19,25 @@ module SurgeAPI
19
19
  # @return [Integer, nil]
20
20
  optional :duration_seconds, Integer
21
21
 
22
- # @!method initialize(user_id:, duration_seconds: nil, request_options: {})
22
+ # @!attribute read_only
23
+ # Restrict the token to viewing embedded conversations and unread counts. Sending
24
+ # messages, changing read state, editing contacts, and calling are disabled.
25
+ # Defaults to false. Preserve this value when refreshing the token; changing
26
+ # access mode requires reloading the embed.
27
+ #
28
+ # @return [Boolean, nil]
29
+ optional :read_only, SurgeAPI::Internal::Type::Boolean
30
+
31
+ # @!method initialize(user_id:, duration_seconds: nil, read_only: nil, request_options: {})
32
+ # Some parameter documentations has been truncated, see
33
+ # {SurgeAPI::Models::UserCreateTokenParams} for more details.
34
+ #
23
35
  # @param user_id [String] The user for which the token represents authentication.
24
36
  #
25
37
  # @param duration_seconds [Integer] For how many seconds the token should be accepted. Defaults to 15 minutes.
26
38
  #
39
+ # @param read_only [Boolean] Restrict the token to viewing embedded conversations and unread counts. Sending
40
+ #
27
41
  # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}]
28
42
  end
29
43
  end
@@ -79,13 +79,19 @@ module SurgeAPI
79
79
 
80
80
  CampaignParams = SurgeAPI::Models::CampaignParams
81
81
 
82
+ CampaignRejectedWebhookEvent = SurgeAPI::Models::CampaignRejectedWebhookEvent
83
+
82
84
  CampaignResendBrandVerificationMessageParams =
83
85
  SurgeAPI::Models::CampaignResendBrandVerificationMessageParams
84
86
 
85
87
  CampaignRetrieveParams = SurgeAPI::Models::CampaignRetrieveParams
86
88
 
89
+ CampaignSubmittedWebhookEvent = SurgeAPI::Models::CampaignSubmittedWebhookEvent
90
+
87
91
  CampaignUpdateParams = SurgeAPI::Models::CampaignUpdateParams
88
92
 
93
+ CampaignWarningWebhookEvent = SurgeAPI::Models::CampaignWarningWebhookEvent
94
+
89
95
  Contact = SurgeAPI::Models::Contact
90
96
 
91
97
  ContactCreateParams = SurgeAPI::Models::ContactCreateParams
@@ -154,6 +160,20 @@ module SurgeAPI
154
160
 
155
161
  RecordingRetrieveParams = SurgeAPI::Models::RecordingRetrieveParams
156
162
 
163
+ TollFreeCampaign = SurgeAPI::Models::TollFreeCampaign
164
+
165
+ TollFreeCampaignConsentFlow = SurgeAPI::Models::TollFreeCampaignConsentFlow
166
+
167
+ TollFreeCampaignCreateParams = SurgeAPI::Models::TollFreeCampaignCreateParams
168
+
169
+ TollFreeCampaignListParams = SurgeAPI::Models::TollFreeCampaignListParams
170
+
171
+ TollFreeCampaignParams = SurgeAPI::Models::TollFreeCampaignParams
172
+
173
+ TollFreeCampaignRetrieveParams = SurgeAPI::Models::TollFreeCampaignRetrieveParams
174
+
175
+ TollFreeCampaignUpdateParams = SurgeAPI::Models::TollFreeCampaignUpdateParams
176
+
157
177
  UnwrapWebhookEvent = SurgeAPI::Models::UnwrapWebhookEvent
158
178
 
159
179
  User = SurgeAPI::Models::User
@@ -6,7 +6,7 @@ module SurgeAPI
6
6
  # Some parameter documentations has been truncated, see
7
7
  # {SurgeAPI::Models::AccountCreateParams} for more details.
8
8
  #
9
- # Creates a new Account within the calling Platform.
9
+ # Creates a new Account.
10
10
  #
11
11
  # @overload create(name:, brand_name: nil, organization: nil, time_zone: nil, request_options: {})
12
12
  #
@@ -90,7 +90,7 @@ module SurgeAPI
90
90
  # Some parameter documentations has been truncated, see
91
91
  # {SurgeAPI::Models::AccountListParams} for more details.
92
92
  #
93
- # List all accounts for the calling platform with cursor-based pagination.
93
+ # List all accounts with cursor-based pagination.
94
94
  #
95
95
  # @overload list(after: nil, before: nil, request_options: {})
96
96
  #
@@ -53,28 +53,46 @@ module SurgeAPI
53
53
  # Some parameter documentations has been truncated, see
54
54
  # {SurgeAPI::Models::CampaignUpdateParams} for more details.
55
55
  #
56
- # Updates a campaign that has not yet been approved. This can be used to fix
57
- # issues flagged during review and resubmit the campaign. Returns an error if the
58
- # campaign is currently in review, has already been approved, or has been
59
- # deactivated.
56
+ # Updates supplied fields on a campaign and submits it for review. Omitted fields
57
+ # retain their stored values. An empty object or empty request body resubmits the
58
+ # existing campaign without changing its registration details. Supplied arrays
59
+ # replace their stored values; an empty includes array clears all inclusion flags.
60
+ # Returns an error if the resulting campaign is incomplete or invalid, or the
61
+ # campaign is not editable.
60
62
  #
61
- # @overload update(id, campaign_params:, request_options: {})
63
+ # @overload update(id, consent_flow: nil, description: nil, includes: nil, link_sample: nil, message_samples: nil, privacy_policy_url: nil, terms_and_conditions_url: nil, use_cases: nil, volume: nil, request_options: {})
62
64
  #
63
65
  # @param id [String] The ID of the campaign to update.
64
66
  #
65
- # @param campaign_params [SurgeAPI::Models::CampaignParams::StandardCampaignParams, SurgeAPI::Models::CampaignParams::ExternalCampaignParams] Parameters for creating a new campaign. Either provide full campaign details or
67
+ # @param consent_flow [String] A string explaining the method through which end users will opt in to receive me
68
+ #
69
+ # @param description [String] An explanation of the organization's purpose and how it will be using text messa
70
+ #
71
+ # @param includes [Array<Symbol, SurgeAPI::Models::CampaignUpdateParams::Include>] A list of properties that this campaign should include. These properties can be
72
+ #
73
+ # @param link_sample [String, nil] A sample link that might be sent by this campaign. This is required when `includ
74
+ #
75
+ # @param message_samples [Array<String>] An array of 2-5 strings with examples of the messages that will be sent from thi
76
+ #
77
+ # @param privacy_policy_url [String] The URL of the privacy policy for the brand in question. This may be a shared pr
78
+ #
79
+ # @param terms_and_conditions_url [String] The URL of the terms and conditions presented to end users when they opt in to m
80
+ #
81
+ # @param use_cases [Array<Symbol, SurgeAPI::Models::CampaignUpdateParams::UseCase>] A list containing 1-5 types of messages that will be sent with this campaign.
82
+ #
83
+ # @param volume [Symbol, SurgeAPI::Models::CampaignUpdateParams::Volume] This will be one of the following:
66
84
  #
67
85
  # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}, nil]
68
86
  #
69
87
  # @return [SurgeAPI::Models::Campaign]
70
88
  #
71
89
  # @see SurgeAPI::Models::CampaignUpdateParams
72
- def update(id, params)
90
+ def update(id, params = {})
73
91
  parsed, options = SurgeAPI::CampaignUpdateParams.dump_request(params)
74
92
  @client.request(
75
93
  method: :patch,
76
94
  path: ["campaigns/%1$s", id],
77
- body: parsed[:campaign_params],
95
+ body: parsed,
78
96
  model: SurgeAPI::Campaign,
79
97
  options: options
80
98
  )
@@ -25,12 +25,14 @@ module SurgeAPI
25
25
 
26
26
  # Updates a phone number's details.
27
27
  #
28
- # @overload update(id, campaign_id: nil, name: nil, request_options: {})
28
+ # @overload update(id, campaign_id: nil, metadata: nil, name: nil, request_options: {})
29
29
  #
30
30
  # @param id [String] The ID of the phone number to update.
31
31
  #
32
32
  # @param campaign_id [String] Campaign ID to attach this number to (`cpn_...`).
33
33
  #
34
+ # @param metadata [Hash{Symbol=>String}] Set of key-value pairs that will be stored with the object.
35
+ #
34
36
  # @param name [String] A human-readable name for the phone number.
35
37
  #
36
38
  # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}, nil]
@@ -127,7 +129,7 @@ module SurgeAPI
127
129
  #
128
130
  # When `phone_number` is provided, all other search parameters are ignored.
129
131
  #
130
- # @overload purchase(account_id, area_code: nil, latitude: nil, longitude: nil, name: nil, phone_number: nil, type: nil, request_options: {})
132
+ # @overload purchase(account_id, area_code: nil, latitude: nil, longitude: nil, metadata: nil, name: nil, phone_number: nil, type: nil, request_options: {})
131
133
  #
132
134
  # @param account_id [String] The account for which the phone number should be created.
133
135
  #
@@ -137,6 +139,8 @@ module SurgeAPI
137
139
  #
138
140
  # @param longitude [Float] Longitude to search for nearby phone numbers. Must be used with latitude. If pro
139
141
  #
142
+ # @param metadata [Hash{Symbol=>String}] Set of key-value pairs that will be stored with the object.
143
+ #
140
144
  # @param name [String] A human-readable name for the phone number. If not provided, defaults to the for
141
145
  #
142
146
  # @param phone_number [String] The exact phone number to purchase in E.164 format. When provided, all other sea
@@ -0,0 +1,140 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SurgeAPI
4
+ module Resources
5
+ class TollFreeCampaigns
6
+ # Creates a toll-free campaign and submits it for Surge review.
7
+ #
8
+ # @overload create(account_id, consent_flows:, description:, message_samples:, phone_number_id:, privacy_policy_url:, terms_and_conditions_url:, use_cases:, includes: nil, request_options: {})
9
+ #
10
+ # @param account_id [String] The account for which the toll-free campaign should be created.
11
+ #
12
+ # @param consent_flows [Array<SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember0, SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember1, SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember2, SurgeAPI::Models::TollFreeCampaignParams::ConsentFlow::UnionMember3>]
13
+ #
14
+ # @param description [String] An explanation of how the toll-free number will be used.
15
+ #
16
+ # @param message_samples [Array<String>]
17
+ #
18
+ # @param phone_number_id [String] The toll-free phone number to register.
19
+ #
20
+ # @param privacy_policy_url [String]
21
+ #
22
+ # @param terms_and_conditions_url [String]
23
+ #
24
+ # @param use_cases [Array<Symbol, SurgeAPI::Models::TollFreeCampaignParams::UseCase>]
25
+ #
26
+ # @param includes [Array<Symbol, SurgeAPI::Models::TollFreeCampaignParams::Include>]
27
+ #
28
+ # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}, nil]
29
+ #
30
+ # @return [SurgeAPI::Models::TollFreeCampaign]
31
+ #
32
+ # @see SurgeAPI::Models::TollFreeCampaignCreateParams
33
+ def create(account_id, params)
34
+ parsed, options = SurgeAPI::TollFreeCampaignCreateParams.dump_request(params)
35
+ @client.request(
36
+ method: :post,
37
+ path: ["accounts/%1$s/toll_free_campaigns", account_id],
38
+ body: parsed,
39
+ model: SurgeAPI::TollFreeCampaign,
40
+ options: options
41
+ )
42
+ end
43
+
44
+ # Retrieves a toll-free campaign object.
45
+ #
46
+ # @overload retrieve(campaign_id, request_options: {})
47
+ #
48
+ # @param campaign_id [String] The ID of the toll-free campaign to retrieve.
49
+ #
50
+ # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}, nil]
51
+ #
52
+ # @return [SurgeAPI::Models::TollFreeCampaign]
53
+ #
54
+ # @see SurgeAPI::Models::TollFreeCampaignRetrieveParams
55
+ def retrieve(campaign_id, params = {})
56
+ @client.request(
57
+ method: :get,
58
+ path: ["toll_free_campaigns/%1$s", campaign_id],
59
+ model: SurgeAPI::TollFreeCampaign,
60
+ options: params[:request_options]
61
+ )
62
+ end
63
+
64
+ # Updates a toll-free campaign awaiting customer fixes and re-submits it for Surge
65
+ # review. Returns 409 if the campaign is not in an updatable status.
66
+ #
67
+ # @overload update(campaign_id, consent_flows: nil, description: nil, includes: nil, message_samples: nil, privacy_policy_url: nil, terms_and_conditions_url: nil, use_cases: nil, request_options: {})
68
+ #
69
+ # @param campaign_id [String] The toll-free campaign ID to update.
70
+ #
71
+ # @param consent_flows [Array<SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember0, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember1, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember2, SurgeAPI::Models::TollFreeCampaignUpdateParams::ConsentFlow::UnionMember3>]
72
+ #
73
+ # @param description [String] An explanation of how the toll-free number will be used.
74
+ #
75
+ # @param includes [Array<Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::Include>]
76
+ #
77
+ # @param message_samples [Array<String>]
78
+ #
79
+ # @param privacy_policy_url [String]
80
+ #
81
+ # @param terms_and_conditions_url [String]
82
+ #
83
+ # @param use_cases [Array<Symbol, SurgeAPI::Models::TollFreeCampaignUpdateParams::UseCase>]
84
+ #
85
+ # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}, nil]
86
+ #
87
+ # @return [SurgeAPI::Models::TollFreeCampaign]
88
+ #
89
+ # @see SurgeAPI::Models::TollFreeCampaignUpdateParams
90
+ def update(campaign_id, params = {})
91
+ parsed, options = SurgeAPI::TollFreeCampaignUpdateParams.dump_request(params)
92
+ @client.request(
93
+ method: :patch,
94
+ path: ["toll_free_campaigns/%1$s", campaign_id],
95
+ body: parsed,
96
+ model: SurgeAPI::TollFreeCampaign,
97
+ options: options
98
+ )
99
+ end
100
+
101
+ # Some parameter documentations has been truncated, see
102
+ # {SurgeAPI::Models::TollFreeCampaignListParams} for more details.
103
+ #
104
+ # List all toll-free campaigns for an account with cursor-based pagination.
105
+ #
106
+ # @overload list(account_id, after: nil, before: nil, request_options: {})
107
+ #
108
+ # @param account_id [String] The account ID to list toll-free campaigns for.
109
+ #
110
+ # @param after [String] Cursor for forward pagination. Use the next_cursor from a previous response.
111
+ #
112
+ # @param before [String] Cursor for backward pagination. Use the previous_cursor from a previous response
113
+ #
114
+ # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}, nil]
115
+ #
116
+ # @return [SurgeAPI::Internal::Cursor<SurgeAPI::Models::TollFreeCampaign>]
117
+ #
118
+ # @see SurgeAPI::Models::TollFreeCampaignListParams
119
+ def list(account_id, params = {})
120
+ parsed, options = SurgeAPI::TollFreeCampaignListParams.dump_request(params)
121
+ query = SurgeAPI::Internal::Util.encode_query_params(parsed)
122
+ @client.request(
123
+ method: :get,
124
+ path: ["accounts/%1$s/toll_free_campaigns", account_id],
125
+ query: query,
126
+ page: SurgeAPI::Internal::Cursor,
127
+ model: SurgeAPI::TollFreeCampaign,
128
+ options: options
129
+ )
130
+ end
131
+
132
+ # @api private
133
+ #
134
+ # @param client [SurgeAPI::Client]
135
+ def initialize(client:)
136
+ @client = client
137
+ end
138
+ end
139
+ end
140
+ end
@@ -138,15 +138,20 @@ module SurgeAPI
138
138
  )
139
139
  end
140
140
 
141
+ # Some parameter documentations has been truncated, see
142
+ # {SurgeAPI::Models::UserCreateTokenParams} for more details.
143
+ #
141
144
  # Provides a mechanism for having Surge create a signed token for embeds instead
142
145
  # of signing with your own signing key.
143
146
  #
144
- # @overload create_token(user_id, duration_seconds: nil, request_options: {})
147
+ # @overload create_token(user_id, duration_seconds: nil, read_only: nil, request_options: {})
145
148
  #
146
149
  # @param user_id [String] The user for which the token represents authentication.
147
150
  #
148
151
  # @param duration_seconds [Integer] For how many seconds the token should be accepted. Defaults to 15 minutes.
149
152
  #
153
+ # @param read_only [Boolean] Restrict the token to viewing embedded conversations and unread counts. Sending
154
+ #
150
155
  # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}, nil]
151
156
  #
152
157
  # @return [SurgeAPI::Models::UserTokenResponse]
@@ -9,7 +9,7 @@ module SurgeAPI
9
9
  #
10
10
  # @param key [String, nil] The webhook signing key
11
11
  #
12
- # @return [SurgeAPI::Models::CallEndedWebhookEvent, SurgeAPI::Models::CampaignApprovedWebhookEvent, SurgeAPI::Models::ContactOptedInWebhookEvent, SurgeAPI::Models::ContactOptedOutWebhookEvent, SurgeAPI::Models::ConversationCreatedWebhookEvent, SurgeAPI::Models::LinkFollowedWebhookEvent, SurgeAPI::Models::MessageDeliveredWebhookEvent, SurgeAPI::Models::MessageFailedWebhookEvent, SurgeAPI::Models::MessageReceivedWebhookEvent, SurgeAPI::Models::MessageSentWebhookEvent, SurgeAPI::Models::PhoneNumberAttachedToCampaignWebhookEvent, SurgeAPI::Models::PhoneNumberImportedWebhookEvent, SurgeAPI::Models::RecordingCompletedWebhookEvent, SurgeAPI::Models::VoicemailReceivedWebhookEvent]
12
+ # @return [SurgeAPI::Models::CallEndedWebhookEvent, SurgeAPI::Models::CampaignApprovedWebhookEvent, SurgeAPI::Models::CampaignRejectedWebhookEvent, SurgeAPI::Models::CampaignSubmittedWebhookEvent, SurgeAPI::Models::CampaignWarningWebhookEvent, SurgeAPI::Models::ContactOptedInWebhookEvent, SurgeAPI::Models::ContactOptedOutWebhookEvent, SurgeAPI::Models::ConversationCreatedWebhookEvent, SurgeAPI::Models::LinkFollowedWebhookEvent, SurgeAPI::Models::MessageDeliveredWebhookEvent, SurgeAPI::Models::MessageFailedWebhookEvent, SurgeAPI::Models::MessageReceivedWebhookEvent, SurgeAPI::Models::MessageSentWebhookEvent, SurgeAPI::Models::PhoneNumberAttachedToCampaignWebhookEvent, SurgeAPI::Models::PhoneNumberImportedWebhookEvent, SurgeAPI::Models::RecordingCompletedWebhookEvent, SurgeAPI::Models::VoicemailReceivedWebhookEvent]
13
13
  def unwrap(payload, headers:, key: @client.webhook_signing_secret)
14
14
  if key.nil?
15
15
  raise ArgumentError.new("Cannot verify a webhook without a key on either the client's webhook_signing_secret or passed in as an argument")
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SurgeAPI
4
- VERSION = "0.24.0"
4
+ VERSION = "0.25.0"
5
5
  end