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
@@ -39,6 +39,10 @@ module SurgeAPI
39
39
  sig { params(conversation: SurgeAPI::Message::Conversation::OrHash).void }
40
40
  attr_writer :conversation
41
41
 
42
+ # The reason the message failed, or null if no failure reason is set.
43
+ sig { returns(T.nilable(String)) }
44
+ attr_accessor :failure_reason
45
+
42
46
  # Set of key-value pairs that will be stored with the object.
43
47
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
44
48
  attr_reader :metadata
@@ -61,6 +65,7 @@ module SurgeAPI
61
65
  blast_id: T.nilable(String),
62
66
  body: T.nilable(String),
63
67
  conversation: SurgeAPI::Message::Conversation::OrHash,
68
+ failure_reason: T.nilable(String),
64
69
  metadata: T::Hash[Symbol, String],
65
70
  status: SurgeAPI::Message::Status::OrSymbol
66
71
  ).returns(T.attached_class)
@@ -76,6 +81,8 @@ module SurgeAPI
76
81
  body: nil,
77
82
  # A conversation with a Contact
78
83
  conversation: nil,
84
+ # The reason the message failed, or null if no failure reason is set.
85
+ failure_reason: nil,
79
86
  # Set of key-value pairs that will be stored with the object.
80
87
  metadata: nil,
81
88
  # The current status of the message.
@@ -91,6 +98,7 @@ module SurgeAPI
91
98
  blast_id: T.nilable(String),
92
99
  body: T.nilable(String),
93
100
  conversation: SurgeAPI::Message::Conversation,
101
+ failure_reason: T.nilable(String),
94
102
  metadata: T::Hash[Symbol, String],
95
103
  status: SurgeAPI::Message::Status::TaggedSymbol
96
104
  }
@@ -256,6 +264,10 @@ module SurgeAPI
256
264
  sig { returns(String) }
257
265
  attr_accessor :id
258
266
 
267
+ # Set of key-value pairs that will be stored with the object.
268
+ sig { returns(T::Hash[Symbol, String]) }
269
+ attr_accessor :metadata
270
+
259
271
  # A human-readable name for the phone number
260
272
  sig { returns(T.nilable(String)) }
261
273
  attr_accessor :name
@@ -276,6 +288,7 @@ module SurgeAPI
276
288
  sig do
277
289
  params(
278
290
  id: String,
291
+ metadata: T::Hash[Symbol, String],
279
292
  name: T.nilable(String),
280
293
  number: String,
281
294
  type: SurgeAPI::Message::Conversation::PhoneNumber::Type::OrSymbol
@@ -284,6 +297,8 @@ module SurgeAPI
284
297
  def self.new(
285
298
  # Unique identifier for the phone number
286
299
  id:,
300
+ # Set of key-value pairs that will be stored with the object.
301
+ metadata:,
287
302
  # A human-readable name for the phone number
288
303
  name:,
289
304
  # The canonical format of the phone number.
@@ -297,6 +312,7 @@ module SurgeAPI
297
312
  override.returns(
298
313
  {
299
314
  id: String,
315
+ metadata: T::Hash[Symbol, String],
300
316
  name: T.nilable(String),
301
317
  number: String,
302
318
  type:
@@ -100,6 +100,10 @@ module SurgeAPI
100
100
  sig { returns(Time) }
101
101
  attr_accessor :delivered_at
102
102
 
103
+ # The reason the message failed, or null if no failure reason is set
104
+ sig { returns(T.nilable(String)) }
105
+ attr_accessor :failure_reason
106
+
103
107
  # Set of key-value pairs that will be stored with the object.
104
108
  sig { returns(T::Hash[Symbol, String]) }
105
109
  attr_accessor :metadata
@@ -148,6 +152,7 @@ module SurgeAPI
148
152
  conversation:
149
153
  SurgeAPI::MessageDeliveredWebhookEvent::Data::Conversation::OrHash,
150
154
  delivered_at: Time,
155
+ failure_reason: T.nilable(String),
151
156
  metadata: T::Hash[Symbol, String],
152
157
  status:
153
158
  SurgeAPI::MessageDeliveredWebhookEvent::Data::Status::OrSymbol,
@@ -167,6 +172,8 @@ module SurgeAPI
167
172
  conversation:,
168
173
  # When the message was delivered
169
174
  delivered_at:,
175
+ # The reason the message failed, or null if no failure reason is set
176
+ failure_reason:,
170
177
  # Set of key-value pairs that will be stored with the object.
171
178
  metadata:,
172
179
  # The message status represented by this event
@@ -187,6 +194,7 @@ module SurgeAPI
187
194
  conversation:
188
195
  SurgeAPI::MessageDeliveredWebhookEvent::Data::Conversation,
189
196
  delivered_at: Time,
197
+ failure_reason: T.nilable(String),
190
198
  metadata: T::Hash[Symbol, String],
191
199
  status:
192
200
  SurgeAPI::MessageDeliveredWebhookEvent::Data::Status::TaggedSymbol,
@@ -98,8 +98,9 @@ module SurgeAPI
98
98
  sig { returns(Time) }
99
99
  attr_accessor :failed_at
100
100
 
101
- # The reason the message failed to be delivered
102
- sig { returns(String) }
101
+ # The reason the message failed to be delivered, or null if no failure reason is
102
+ # set
103
+ sig { returns(T.nilable(String)) }
103
104
  attr_accessor :failure_reason
104
105
 
105
106
  # Set of key-value pairs that will be stored with the object.
@@ -150,7 +151,7 @@ module SurgeAPI
150
151
  conversation:
151
152
  SurgeAPI::MessageFailedWebhookEvent::Data::Conversation::OrHash,
152
153
  failed_at: Time,
153
- failure_reason: String,
154
+ failure_reason: T.nilable(String),
154
155
  metadata: T::Hash[Symbol, String],
155
156
  status: SurgeAPI::MessageFailedWebhookEvent::Data::Status::OrSymbol,
156
157
  attachments:
@@ -169,7 +170,8 @@ module SurgeAPI
169
170
  conversation:,
170
171
  # When the message failed
171
172
  failed_at:,
172
- # The reason the message failed to be delivered
173
+ # The reason the message failed to be delivered, or null if no failure reason is
174
+ # set
173
175
  failure_reason:,
174
176
  # Set of key-value pairs that will be stored with the object.
175
177
  metadata:,
@@ -191,7 +193,7 @@ module SurgeAPI
191
193
  conversation:
192
194
  SurgeAPI::MessageFailedWebhookEvent::Data::Conversation,
193
195
  failed_at: Time,
194
- failure_reason: String,
196
+ failure_reason: T.nilable(String),
195
197
  metadata: T::Hash[Symbol, String],
196
198
  status:
197
199
  SurgeAPI::MessageFailedWebhookEvent::Data::Status::TaggedSymbol,
@@ -96,6 +96,10 @@ module SurgeAPI
96
96
  end
97
97
  attr_writer :conversation
98
98
 
99
+ # The reason the message failed, or null if no failure reason is set
100
+ sig { returns(T.nilable(String)) }
101
+ attr_accessor :failure_reason
102
+
99
103
  # Set of key-value pairs that will be stored with the object.
100
104
  sig { returns(T::Hash[Symbol, String]) }
101
105
  attr_accessor :metadata
@@ -147,6 +151,7 @@ module SurgeAPI
147
151
  body: T.nilable(String),
148
152
  conversation:
149
153
  SurgeAPI::MessageReceivedWebhookEvent::Data::Conversation::OrHash,
154
+ failure_reason: T.nilable(String),
150
155
  metadata: T::Hash[Symbol, String],
151
156
  received_at: Time,
152
157
  status:
@@ -165,6 +170,8 @@ module SurgeAPI
165
170
  body:,
166
171
  # The conversation this message belongs to
167
172
  conversation:,
173
+ # The reason the message failed, or null if no failure reason is set
174
+ failure_reason:,
168
175
  # Set of key-value pairs that will be stored with the object.
169
176
  metadata:,
170
177
  # When the message was received
@@ -186,6 +193,7 @@ module SurgeAPI
186
193
  body: T.nilable(String),
187
194
  conversation:
188
195
  SurgeAPI::MessageReceivedWebhookEvent::Data::Conversation,
196
+ failure_reason: T.nilable(String),
189
197
  metadata: T::Hash[Symbol, String],
190
198
  received_at: Time,
191
199
  status:
@@ -89,6 +89,10 @@ module SurgeAPI
89
89
  end
90
90
  attr_writer :conversation
91
91
 
92
+ # The reason the message failed, or null if no failure reason is set
93
+ sig { returns(T.nilable(String)) }
94
+ attr_accessor :failure_reason
95
+
92
96
  # Set of key-value pairs that will be stored with the object.
93
97
  sig { returns(T::Hash[Symbol, String]) }
94
98
  attr_accessor :metadata
@@ -138,6 +142,7 @@ module SurgeAPI
138
142
  body: T.nilable(String),
139
143
  conversation:
140
144
  SurgeAPI::MessageSentWebhookEvent::Data::Conversation::OrHash,
145
+ failure_reason: T.nilable(String),
141
146
  metadata: T::Hash[Symbol, String],
142
147
  sent_at: Time,
143
148
  status: SurgeAPI::MessageSentWebhookEvent::Data::Status::OrSymbol,
@@ -155,6 +160,8 @@ module SurgeAPI
155
160
  body:,
156
161
  # The conversation this message belongs to
157
162
  conversation:,
163
+ # The reason the message failed, or null if no failure reason is set
164
+ failure_reason:,
158
165
  # Set of key-value pairs that will be stored with the object.
159
166
  metadata:,
160
167
  # When the message was sent
@@ -176,6 +183,7 @@ module SurgeAPI
176
183
  body: T.nilable(String),
177
184
  conversation:
178
185
  SurgeAPI::MessageSentWebhookEvent::Data::Conversation,
186
+ failure_reason: T.nilable(String),
179
187
  metadata: T::Hash[Symbol, String],
180
188
  sent_at: Time,
181
189
  status:
@@ -28,6 +28,10 @@ module SurgeAPI
28
28
  sig { returns(T.nilable(String)) }
29
29
  attr_accessor :campaign_id
30
30
 
31
+ # Set of key-value pairs that will be stored with the object.
32
+ sig { returns(T::Hash[Symbol, String]) }
33
+ attr_accessor :metadata
34
+
31
35
  # A human-readable name for the phone number
32
36
  sig { returns(T.nilable(String)) }
33
37
  attr_accessor :name
@@ -46,6 +50,7 @@ module SurgeAPI
46
50
  id: String,
47
51
  campaign: T.nilable(SurgeAPI::PhoneNumber::Campaign::OrHash),
48
52
  campaign_id: T.nilable(String),
53
+ metadata: T::Hash[Symbol, String],
49
54
  name: T.nilable(String),
50
55
  number: String,
51
56
  type: SurgeAPI::PhoneNumber::Type::OrSymbol
@@ -59,6 +64,8 @@ module SurgeAPI
59
64
  # Deprecated. The unique identifier of the campaign this phone number is attached
60
65
  # to, if any
61
66
  campaign_id:,
67
+ # Set of key-value pairs that will be stored with the object.
68
+ metadata:,
62
69
  # A human-readable name for the phone number
63
70
  name:,
64
71
  # The phone number in E.164 format
@@ -74,6 +81,7 @@ module SurgeAPI
74
81
  id: String,
75
82
  campaign: T.nilable(SurgeAPI::PhoneNumber::Campaign),
76
83
  campaign_id: T.nilable(String),
84
+ metadata: T::Hash[Symbol, String],
77
85
  name: T.nilable(String),
78
86
  number: String,
79
87
  type: SurgeAPI::PhoneNumber::Type::TaggedSymbol
@@ -109,6 +109,10 @@ module SurgeAPI
109
109
  sig { returns(String) }
110
110
  attr_accessor :campaign_id
111
111
 
112
+ # Set of key-value pairs that will be stored with the object.
113
+ sig { returns(T::Hash[Symbol, String]) }
114
+ attr_accessor :metadata
115
+
112
116
  # A human-readable name for the phone number
113
117
  sig { returns(T.nilable(String)) }
114
118
  attr_accessor :name
@@ -134,6 +138,7 @@ module SurgeAPI
134
138
  SurgeAPI::PhoneNumberAttachedToCampaignWebhookEvent::Data::Campaign::OrHash
135
139
  ),
136
140
  campaign_id: String,
141
+ metadata: T::Hash[Symbol, String],
137
142
  name: T.nilable(String),
138
143
  number: String,
139
144
  type:
@@ -148,6 +153,8 @@ module SurgeAPI
148
153
  # Deprecated. The unique identifier of the campaign this phone number is attached
149
154
  # to
150
155
  campaign_id:,
156
+ # Set of key-value pairs that will be stored with the object.
157
+ metadata:,
151
158
  # A human-readable name for the phone number
152
159
  name:,
153
160
  # The phone number in E.164 format
@@ -166,6 +173,7 @@ module SurgeAPI
166
173
  SurgeAPI::PhoneNumberAttachedToCampaignWebhookEvent::Data::Campaign
167
174
  ),
168
175
  campaign_id: String,
176
+ metadata: T::Hash[Symbol, String],
169
177
  name: T.nilable(String),
170
178
  number: String,
171
179
  type:
@@ -103,6 +103,10 @@ module SurgeAPI
103
103
  sig { returns(T.nilable(String)) }
104
104
  attr_accessor :campaign_id
105
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
+
106
110
  # A human-readable name for the phone number
107
111
  sig { returns(T.nilable(String)) }
108
112
  attr_accessor :name
@@ -128,6 +132,7 @@ module SurgeAPI
128
132
  SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::OrHash
129
133
  ),
130
134
  campaign_id: T.nilable(String),
135
+ metadata: T::Hash[Symbol, String],
131
136
  name: T.nilable(String),
132
137
  number: String,
133
138
  type:
@@ -142,6 +147,8 @@ module SurgeAPI
142
147
  # Deprecated. The unique identifier of the campaign this phone number is attached
143
148
  # to
144
149
  campaign_id:,
150
+ # Set of key-value pairs that will be stored with the object.
151
+ metadata:,
145
152
  # A human-readable name for the phone number
146
153
  name:,
147
154
  # The phone number in E.164 format
@@ -160,6 +167,7 @@ module SurgeAPI
160
167
  SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign
161
168
  ),
162
169
  campaign_id: T.nilable(String),
170
+ metadata: T::Hash[Symbol, String],
163
171
  name: T.nilable(String),
164
172
  number: String,
165
173
  type:
@@ -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