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
@@ -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
@@ -46,6 +50,13 @@ module SurgeAPI
46
50
  sig { params(metadata: T::Hash[Symbol, String]).void }
47
51
  attr_writer :metadata
48
52
 
53
+ # The current status of the message.
54
+ sig { returns(T.nilable(SurgeAPI::Message::Status::TaggedSymbol)) }
55
+ attr_reader :status
56
+
57
+ sig { params(status: SurgeAPI::Message::Status::OrSymbol).void }
58
+ attr_writer :status
59
+
49
60
  # A Message is a communication sent to a Contact.
50
61
  sig do
51
62
  params(
@@ -54,7 +65,9 @@ module SurgeAPI
54
65
  blast_id: T.nilable(String),
55
66
  body: T.nilable(String),
56
67
  conversation: SurgeAPI::Message::Conversation::OrHash,
57
- metadata: T::Hash[Symbol, String]
68
+ failure_reason: T.nilable(String),
69
+ metadata: T::Hash[Symbol, String],
70
+ status: SurgeAPI::Message::Status::OrSymbol
58
71
  ).returns(T.attached_class)
59
72
  end
60
73
  def self.new(
@@ -68,8 +81,12 @@ module SurgeAPI
68
81
  body: nil,
69
82
  # A conversation with a Contact
70
83
  conversation: nil,
84
+ # The reason the message failed, or null if no failure reason is set.
85
+ failure_reason: nil,
71
86
  # Set of key-value pairs that will be stored with the object.
72
- metadata: nil
87
+ metadata: nil,
88
+ # The current status of the message.
89
+ status: nil
73
90
  )
74
91
  end
75
92
 
@@ -81,7 +98,9 @@ module SurgeAPI
81
98
  blast_id: T.nilable(String),
82
99
  body: T.nilable(String),
83
100
  conversation: SurgeAPI::Message::Conversation,
84
- metadata: T::Hash[Symbol, String]
101
+ failure_reason: T.nilable(String),
102
+ metadata: T::Hash[Symbol, String],
103
+ status: SurgeAPI::Message::Status::TaggedSymbol
85
104
  }
86
105
  )
87
106
  end
@@ -245,6 +264,10 @@ module SurgeAPI
245
264
  sig { returns(String) }
246
265
  attr_accessor :id
247
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
+
248
271
  # A human-readable name for the phone number
249
272
  sig { returns(T.nilable(String)) }
250
273
  attr_accessor :name
@@ -265,6 +288,7 @@ module SurgeAPI
265
288
  sig do
266
289
  params(
267
290
  id: String,
291
+ metadata: T::Hash[Symbol, String],
268
292
  name: T.nilable(String),
269
293
  number: String,
270
294
  type: SurgeAPI::Message::Conversation::PhoneNumber::Type::OrSymbol
@@ -273,6 +297,8 @@ module SurgeAPI
273
297
  def self.new(
274
298
  # Unique identifier for the phone number
275
299
  id:,
300
+ # Set of key-value pairs that will be stored with the object.
301
+ metadata:,
276
302
  # A human-readable name for the phone number
277
303
  name:,
278
304
  # The canonical format of the phone number.
@@ -286,6 +312,7 @@ module SurgeAPI
286
312
  override.returns(
287
313
  {
288
314
  id: String,
315
+ metadata: T::Hash[Symbol, String],
289
316
  name: T.nilable(String),
290
317
  number: String,
291
318
  type:
@@ -342,6 +369,26 @@ module SurgeAPI
342
369
  end
343
370
  end
344
371
  end
372
+
373
+ # The current status of the message.
374
+ module Status
375
+ extend SurgeAPI::Internal::Type::Enum
376
+
377
+ TaggedSymbol = T.type_alias { T.all(Symbol, SurgeAPI::Message::Status) }
378
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
379
+
380
+ PENDING = T.let(:pending, SurgeAPI::Message::Status::TaggedSymbol)
381
+ RECEIVED = T.let(:received, SurgeAPI::Message::Status::TaggedSymbol)
382
+ SENT = T.let(:sent, SurgeAPI::Message::Status::TaggedSymbol)
383
+ DELIVERED = T.let(:delivered, SurgeAPI::Message::Status::TaggedSymbol)
384
+ FAILED = T.let(:failed, SurgeAPI::Message::Status::TaggedSymbol)
385
+
386
+ sig do
387
+ override.returns(T::Array[SurgeAPI::Message::Status::TaggedSymbol])
388
+ end
389
+ def self.values
390
+ end
391
+ end
345
392
  end
346
393
  end
347
394
  end
@@ -100,10 +100,22 @@ 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
106
110
 
111
+ # The message status represented by this event
112
+ sig do
113
+ returns(
114
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Status::TaggedSymbol
115
+ )
116
+ end
117
+ attr_accessor :status
118
+
107
119
  # Attachments included with the message
108
120
  sig do
109
121
  returns(
@@ -140,7 +152,10 @@ module SurgeAPI
140
152
  conversation:
141
153
  SurgeAPI::MessageDeliveredWebhookEvent::Data::Conversation::OrHash,
142
154
  delivered_at: Time,
155
+ failure_reason: T.nilable(String),
143
156
  metadata: T::Hash[Symbol, String],
157
+ status:
158
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Status::OrSymbol,
144
159
  attachments:
145
160
  T::Array[
146
161
  SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::OrHash
@@ -157,8 +172,12 @@ module SurgeAPI
157
172
  conversation:,
158
173
  # When the message was delivered
159
174
  delivered_at:,
175
+ # The reason the message failed, or null if no failure reason is set
176
+ failure_reason:,
160
177
  # Set of key-value pairs that will be stored with the object.
161
178
  metadata:,
179
+ # The message status represented by this event
180
+ status:,
162
181
  # Attachments included with the message
163
182
  attachments: nil,
164
183
  # The ID of the blast this message belongs to, if any. This can be used to
@@ -175,7 +194,10 @@ module SurgeAPI
175
194
  conversation:
176
195
  SurgeAPI::MessageDeliveredWebhookEvent::Data::Conversation,
177
196
  delivered_at: Time,
197
+ failure_reason: T.nilable(String),
178
198
  metadata: T::Hash[Symbol, String],
199
+ status:
200
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Status::TaggedSymbol,
179
201
  attachments:
180
202
  T::Array[
181
203
  SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment
@@ -245,6 +267,36 @@ module SurgeAPI
245
267
  end
246
268
  end
247
269
 
270
+ # The message status represented by this event
271
+ module Status
272
+ extend SurgeAPI::Internal::Type::Enum
273
+
274
+ TaggedSymbol =
275
+ T.type_alias do
276
+ T.all(
277
+ Symbol,
278
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Status
279
+ )
280
+ end
281
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
282
+
283
+ DELIVERED =
284
+ T.let(
285
+ :delivered,
286
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Status::TaggedSymbol
287
+ )
288
+
289
+ sig do
290
+ override.returns(
291
+ T::Array[
292
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Status::TaggedSymbol
293
+ ]
294
+ )
295
+ end
296
+ def self.values
297
+ end
298
+ end
299
+
248
300
  class Attachment < SurgeAPI::Internal::Type::BaseModel
249
301
  OrHash =
250
302
  T.type_alias do
@@ -98,14 +98,23 @@ 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.
106
107
  sig { returns(T::Hash[Symbol, String]) }
107
108
  attr_accessor :metadata
108
109
 
110
+ # The message status represented by this event
111
+ sig do
112
+ returns(
113
+ SurgeAPI::MessageFailedWebhookEvent::Data::Status::TaggedSymbol
114
+ )
115
+ end
116
+ attr_accessor :status
117
+
109
118
  # Attachments included with the message
110
119
  sig do
111
120
  returns(
@@ -142,8 +151,9 @@ module SurgeAPI
142
151
  conversation:
143
152
  SurgeAPI::MessageFailedWebhookEvent::Data::Conversation::OrHash,
144
153
  failed_at: Time,
145
- failure_reason: String,
154
+ failure_reason: T.nilable(String),
146
155
  metadata: T::Hash[Symbol, String],
156
+ status: SurgeAPI::MessageFailedWebhookEvent::Data::Status::OrSymbol,
147
157
  attachments:
148
158
  T::Array[
149
159
  SurgeAPI::MessageFailedWebhookEvent::Data::Attachment::OrHash
@@ -160,10 +170,13 @@ module SurgeAPI
160
170
  conversation:,
161
171
  # When the message failed
162
172
  failed_at:,
163
- # 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
164
175
  failure_reason:,
165
176
  # Set of key-value pairs that will be stored with the object.
166
177
  metadata:,
178
+ # The message status represented by this event
179
+ status:,
167
180
  # Attachments included with the message
168
181
  attachments: nil,
169
182
  # The ID of the blast this message belongs to, if any. This can be used to
@@ -180,8 +193,10 @@ module SurgeAPI
180
193
  conversation:
181
194
  SurgeAPI::MessageFailedWebhookEvent::Data::Conversation,
182
195
  failed_at: Time,
183
- failure_reason: String,
196
+ failure_reason: T.nilable(String),
184
197
  metadata: T::Hash[Symbol, String],
198
+ status:
199
+ SurgeAPI::MessageFailedWebhookEvent::Data::Status::TaggedSymbol,
185
200
  attachments:
186
201
  T::Array[SurgeAPI::MessageFailedWebhookEvent::Data::Attachment],
187
202
  blast_id: String
@@ -249,6 +264,33 @@ module SurgeAPI
249
264
  end
250
265
  end
251
266
 
267
+ # The message status represented by this event
268
+ module Status
269
+ extend SurgeAPI::Internal::Type::Enum
270
+
271
+ TaggedSymbol =
272
+ T.type_alias do
273
+ T.all(Symbol, SurgeAPI::MessageFailedWebhookEvent::Data::Status)
274
+ end
275
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
276
+
277
+ FAILED =
278
+ T.let(
279
+ :failed,
280
+ SurgeAPI::MessageFailedWebhookEvent::Data::Status::TaggedSymbol
281
+ )
282
+
283
+ sig do
284
+ override.returns(
285
+ T::Array[
286
+ SurgeAPI::MessageFailedWebhookEvent::Data::Status::TaggedSymbol
287
+ ]
288
+ )
289
+ end
290
+ def self.values
291
+ end
292
+ end
293
+
252
294
  class Attachment < SurgeAPI::Internal::Type::BaseModel
253
295
  OrHash =
254
296
  T.type_alias do
@@ -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
@@ -104,6 +108,14 @@ module SurgeAPI
104
108
  sig { returns(Time) }
105
109
  attr_accessor :received_at
106
110
 
111
+ # The message status represented by this event
112
+ sig do
113
+ returns(
114
+ SurgeAPI::MessageReceivedWebhookEvent::Data::Status::TaggedSymbol
115
+ )
116
+ end
117
+ attr_accessor :status
118
+
107
119
  # Attachments included with the message
108
120
  sig do
109
121
  returns(
@@ -139,8 +151,11 @@ module SurgeAPI
139
151
  body: T.nilable(String),
140
152
  conversation:
141
153
  SurgeAPI::MessageReceivedWebhookEvent::Data::Conversation::OrHash,
154
+ failure_reason: T.nilable(String),
142
155
  metadata: T::Hash[Symbol, String],
143
156
  received_at: Time,
157
+ status:
158
+ SurgeAPI::MessageReceivedWebhookEvent::Data::Status::OrSymbol,
144
159
  attachments:
145
160
  T::Array[
146
161
  SurgeAPI::MessageReceivedWebhookEvent::Data::Attachment::OrHash
@@ -155,10 +170,14 @@ module SurgeAPI
155
170
  body:,
156
171
  # The conversation this message belongs to
157
172
  conversation:,
173
+ # The reason the message failed, or null if no failure reason is set
174
+ failure_reason:,
158
175
  # Set of key-value pairs that will be stored with the object.
159
176
  metadata:,
160
177
  # When the message was received
161
178
  received_at:,
179
+ # The message status represented by this event
180
+ status:,
162
181
  # Attachments included with the message
163
182
  attachments: nil,
164
183
  # The ID of the blast this message belongs to, if any. This can be used to
@@ -174,8 +193,11 @@ module SurgeAPI
174
193
  body: T.nilable(String),
175
194
  conversation:
176
195
  SurgeAPI::MessageReceivedWebhookEvent::Data::Conversation,
196
+ failure_reason: T.nilable(String),
177
197
  metadata: T::Hash[Symbol, String],
178
198
  received_at: Time,
199
+ status:
200
+ SurgeAPI::MessageReceivedWebhookEvent::Data::Status::TaggedSymbol,
179
201
  attachments:
180
202
  T::Array[
181
203
  SurgeAPI::MessageReceivedWebhookEvent::Data::Attachment
@@ -245,6 +267,33 @@ module SurgeAPI
245
267
  end
246
268
  end
247
269
 
270
+ # The message status represented by this event
271
+ module Status
272
+ extend SurgeAPI::Internal::Type::Enum
273
+
274
+ TaggedSymbol =
275
+ T.type_alias do
276
+ T.all(Symbol, SurgeAPI::MessageReceivedWebhookEvent::Data::Status)
277
+ end
278
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
279
+
280
+ RECEIVED =
281
+ T.let(
282
+ :received,
283
+ SurgeAPI::MessageReceivedWebhookEvent::Data::Status::TaggedSymbol
284
+ )
285
+
286
+ sig do
287
+ override.returns(
288
+ T::Array[
289
+ SurgeAPI::MessageReceivedWebhookEvent::Data::Status::TaggedSymbol
290
+ ]
291
+ )
292
+ end
293
+ def self.values
294
+ end
295
+ end
296
+
248
297
  class Attachment < SurgeAPI::Internal::Type::BaseModel
249
298
  OrHash =
250
299
  T.type_alias do
@@ -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
@@ -97,6 +101,12 @@ module SurgeAPI
97
101
  sig { returns(Time) }
98
102
  attr_accessor :sent_at
99
103
 
104
+ # The message status represented by this event
105
+ sig do
106
+ returns(SurgeAPI::MessageSentWebhookEvent::Data::Status::TaggedSymbol)
107
+ end
108
+ attr_accessor :status
109
+
100
110
  # Attachments included with the message
101
111
  sig do
102
112
  returns(
@@ -132,8 +142,10 @@ module SurgeAPI
132
142
  body: T.nilable(String),
133
143
  conversation:
134
144
  SurgeAPI::MessageSentWebhookEvent::Data::Conversation::OrHash,
145
+ failure_reason: T.nilable(String),
135
146
  metadata: T::Hash[Symbol, String],
136
147
  sent_at: Time,
148
+ status: SurgeAPI::MessageSentWebhookEvent::Data::Status::OrSymbol,
137
149
  attachments:
138
150
  T::Array[
139
151
  SurgeAPI::MessageSentWebhookEvent::Data::Attachment::OrHash
@@ -148,10 +160,14 @@ module SurgeAPI
148
160
  body:,
149
161
  # The conversation this message belongs to
150
162
  conversation:,
163
+ # The reason the message failed, or null if no failure reason is set
164
+ failure_reason:,
151
165
  # Set of key-value pairs that will be stored with the object.
152
166
  metadata:,
153
167
  # When the message was sent
154
168
  sent_at:,
169
+ # The message status represented by this event
170
+ status:,
155
171
  # Attachments included with the message
156
172
  attachments: nil,
157
173
  # The ID of the blast this message belongs to, if any. This can be used to
@@ -167,8 +183,11 @@ module SurgeAPI
167
183
  body: T.nilable(String),
168
184
  conversation:
169
185
  SurgeAPI::MessageSentWebhookEvent::Data::Conversation,
186
+ failure_reason: T.nilable(String),
170
187
  metadata: T::Hash[Symbol, String],
171
188
  sent_at: Time,
189
+ status:
190
+ SurgeAPI::MessageSentWebhookEvent::Data::Status::TaggedSymbol,
172
191
  attachments:
173
192
  T::Array[SurgeAPI::MessageSentWebhookEvent::Data::Attachment],
174
193
  blast_id: String
@@ -236,6 +255,33 @@ module SurgeAPI
236
255
  end
237
256
  end
238
257
 
258
+ # The message status represented by this event
259
+ module Status
260
+ extend SurgeAPI::Internal::Type::Enum
261
+
262
+ TaggedSymbol =
263
+ T.type_alias do
264
+ T.all(Symbol, SurgeAPI::MessageSentWebhookEvent::Data::Status)
265
+ end
266
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
267
+
268
+ SENT =
269
+ T.let(
270
+ :sent,
271
+ SurgeAPI::MessageSentWebhookEvent::Data::Status::TaggedSymbol
272
+ )
273
+
274
+ sig do
275
+ override.returns(
276
+ T::Array[
277
+ SurgeAPI::MessageSentWebhookEvent::Data::Status::TaggedSymbol
278
+ ]
279
+ )
280
+ end
281
+ def self.values
282
+ end
283
+ end
284
+
239
285
  class Attachment < SurgeAPI::Internal::Type::BaseModel
240
286
  OrHash =
241
287
  T.type_alias do
@@ -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: