surge_api 0.1.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 (212) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +28 -0
  4. data/README.md +286 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/surge_api/client.rb +106 -0
  7. data/lib/surge_api/errors.rb +228 -0
  8. data/lib/surge_api/file_part.rb +55 -0
  9. data/lib/surge_api/internal/transport/base_client.rb +567 -0
  10. data/lib/surge_api/internal/transport/pooled_net_requester.rb +201 -0
  11. data/lib/surge_api/internal/type/array_of.rb +168 -0
  12. data/lib/surge_api/internal/type/base_model.rb +531 -0
  13. data/lib/surge_api/internal/type/base_page.rb +55 -0
  14. data/lib/surge_api/internal/type/boolean.rb +77 -0
  15. data/lib/surge_api/internal/type/converter.rb +327 -0
  16. data/lib/surge_api/internal/type/enum.rb +131 -0
  17. data/lib/surge_api/internal/type/file_input.rb +108 -0
  18. data/lib/surge_api/internal/type/hash_of.rb +188 -0
  19. data/lib/surge_api/internal/type/request_parameters.rb +42 -0
  20. data/lib/surge_api/internal/type/union.rb +250 -0
  21. data/lib/surge_api/internal/type/unknown.rb +81 -0
  22. data/lib/surge_api/internal/util.rb +915 -0
  23. data/lib/surge_api/internal.rb +20 -0
  24. data/lib/surge_api/models/account.rb +60 -0
  25. data/lib/surge_api/models/account_create_params.rb +481 -0
  26. data/lib/surge_api/models/account_retrieve_status_params.rb +32 -0
  27. data/lib/surge_api/models/account_status.rb +104 -0
  28. data/lib/surge_api/models/account_update_params.rb +480 -0
  29. data/lib/surge_api/models/blast.rb +61 -0
  30. data/lib/surge_api/models/blast_create_params.rb +90 -0
  31. data/lib/surge_api/models/call_ended_webhook_event.rb +106 -0
  32. data/lib/surge_api/models/campaign.rb +208 -0
  33. data/lib/surge_api/models/campaign_approved_webhook_event.rb +74 -0
  34. data/lib/surge_api/models/campaign_create_params.rb +202 -0
  35. data/lib/surge_api/models/contact.rb +59 -0
  36. data/lib/surge_api/models/contact_create_params.rb +54 -0
  37. data/lib/surge_api/models/contact_retrieve_params.rb +14 -0
  38. data/lib/surge_api/models/contact_update_params.rb +54 -0
  39. data/lib/surge_api/models/conversation_created_webhook_event.rb +70 -0
  40. data/lib/surge_api/models/error.rb +34 -0
  41. data/lib/surge_api/models/message.rb +146 -0
  42. data/lib/surge_api/models/message_create_params.rb +153 -0
  43. data/lib/surge_api/models/message_delivered_webhook_event.rb +159 -0
  44. data/lib/surge_api/models/message_failed_webhook_event.rb +167 -0
  45. data/lib/surge_api/models/message_received_webhook_event.rb +159 -0
  46. data/lib/surge_api/models/message_sent_webhook_event.rb +159 -0
  47. data/lib/surge_api/models/organization.rb +419 -0
  48. data/lib/surge_api/models/phone_number.rb +48 -0
  49. data/lib/surge_api/models/phone_number_purchase_params.rb +65 -0
  50. data/lib/surge_api/models/unwrap_webhook_event.rb +26 -0
  51. data/lib/surge_api/models/user.rb +51 -0
  52. data/lib/surge_api/models/user_create_params.rb +46 -0
  53. data/lib/surge_api/models/user_create_token_params.rb +22 -0
  54. data/lib/surge_api/models/user_retrieve_params.rb +14 -0
  55. data/lib/surge_api/models/user_token_response.rb +19 -0
  56. data/lib/surge_api/models/user_update_params.rb +46 -0
  57. data/lib/surge_api/models/verification.rb +58 -0
  58. data/lib/surge_api/models/verification_check.rb +43 -0
  59. data/lib/surge_api/models/verification_check_params.rb +22 -0
  60. data/lib/surge_api/models/verification_create_params.rb +22 -0
  61. data/lib/surge_api/models/webhook_unwrap_params.rb +14 -0
  62. data/lib/surge_api/models.rb +117 -0
  63. data/lib/surge_api/request_options.rb +77 -0
  64. data/lib/surge_api/resources/accounts.rb +102 -0
  65. data/lib/surge_api/resources/blasts.rb +53 -0
  66. data/lib/surge_api/resources/campaigns.rb +57 -0
  67. data/lib/surge_api/resources/contacts.rb +99 -0
  68. data/lib/surge_api/resources/messages.rb +75 -0
  69. data/lib/surge_api/resources/phone_numbers.rb +48 -0
  70. data/lib/surge_api/resources/users.rb +119 -0
  71. data/lib/surge_api/resources/verifications.rb +60 -0
  72. data/lib/surge_api/resources/webhooks.rb +22 -0
  73. data/lib/surge_api/version.rb +5 -0
  74. data/lib/surge_api.rb +100 -0
  75. data/manifest.yaml +15 -0
  76. data/rbi/surge_api/client.rbi +73 -0
  77. data/rbi/surge_api/errors.rbi +205 -0
  78. data/rbi/surge_api/file_part.rbi +37 -0
  79. data/rbi/surge_api/internal/transport/base_client.rbi +292 -0
  80. data/rbi/surge_api/internal/transport/pooled_net_requester.rbi +79 -0
  81. data/rbi/surge_api/internal/type/array_of.rbi +104 -0
  82. data/rbi/surge_api/internal/type/base_model.rbi +302 -0
  83. data/rbi/surge_api/internal/type/base_page.rbi +42 -0
  84. data/rbi/surge_api/internal/type/boolean.rbi +58 -0
  85. data/rbi/surge_api/internal/type/converter.rbi +216 -0
  86. data/rbi/surge_api/internal/type/enum.rbi +82 -0
  87. data/rbi/surge_api/internal/type/file_input.rbi +59 -0
  88. data/rbi/surge_api/internal/type/hash_of.rbi +104 -0
  89. data/rbi/surge_api/internal/type/request_parameters.rbi +29 -0
  90. data/rbi/surge_api/internal/type/union.rbi +128 -0
  91. data/rbi/surge_api/internal/type/unknown.rbi +58 -0
  92. data/rbi/surge_api/internal/util.rbi +487 -0
  93. data/rbi/surge_api/internal.rbi +16 -0
  94. data/rbi/surge_api/models/account.rbi +83 -0
  95. data/rbi/surge_api/models/account_create_params.rbi +1104 -0
  96. data/rbi/surge_api/models/account_retrieve_status_params.rbi +96 -0
  97. data/rbi/surge_api/models/account_status.rbi +185 -0
  98. data/rbi/surge_api/models/account_update_params.rbi +1105 -0
  99. data/rbi/surge_api/models/blast.rbi +108 -0
  100. data/rbi/surge_api/models/blast_create_params.rbi +145 -0
  101. data/rbi/surge_api/models/call_ended_webhook_event.rbi +205 -0
  102. data/rbi/surge_api/models/campaign.rbi +331 -0
  103. data/rbi/surge_api/models/campaign_approved_webhook_event.rbi +149 -0
  104. data/rbi/surge_api/models/campaign_create_params.rbi +386 -0
  105. data/rbi/surge_api/models/contact.rbi +88 -0
  106. data/rbi/surge_api/models/contact_create_params.rbi +87 -0
  107. data/rbi/surge_api/models/contact_retrieve_params.rbi +27 -0
  108. data/rbi/surge_api/models/contact_update_params.rbi +87 -0
  109. data/rbi/surge_api/models/conversation_created_webhook_event.rbi +129 -0
  110. data/rbi/surge_api/models/error.rbi +51 -0
  111. data/rbi/surge_api/models/message.rbi +283 -0
  112. data/rbi/surge_api/models/message_create_params.rbi +281 -0
  113. data/rbi/surge_api/models/message_delivered_webhook_event.rbi +331 -0
  114. data/rbi/surge_api/models/message_failed_webhook_event.rbi +335 -0
  115. data/rbi/surge_api/models/message_received_webhook_event.rbi +331 -0
  116. data/rbi/surge_api/models/message_sent_webhook_event.rbi +322 -0
  117. data/rbi/surge_api/models/organization.rbi +649 -0
  118. data/rbi/surge_api/models/phone_number.rbi +72 -0
  119. data/rbi/surge_api/models/phone_number_purchase_params.rbi +122 -0
  120. data/rbi/surge_api/models/unwrap_webhook_event.rbi +26 -0
  121. data/rbi/surge_api/models/user.rbi +80 -0
  122. data/rbi/surge_api/models/user_create_params.rbi +76 -0
  123. data/rbi/surge_api/models/user_create_token_params.rbi +46 -0
  124. data/rbi/surge_api/models/user_retrieve_params.rbi +27 -0
  125. data/rbi/surge_api/models/user_token_response.rbi +31 -0
  126. data/rbi/surge_api/models/user_update_params.rbi +76 -0
  127. data/rbi/surge_api/models/verification.rbi +86 -0
  128. data/rbi/surge_api/models/verification_check.rbi +84 -0
  129. data/rbi/surge_api/models/verification_check_params.rbi +40 -0
  130. data/rbi/surge_api/models/verification_create_params.rbi +40 -0
  131. data/rbi/surge_api/models/webhook_unwrap_params.rbi +27 -0
  132. data/rbi/surge_api/models.rbi +80 -0
  133. data/rbi/surge_api/request_options.rbi +59 -0
  134. data/rbi/surge_api/resources/accounts.rbi +94 -0
  135. data/rbi/surge_api/resources/blasts.rbi +48 -0
  136. data/rbi/surge_api/resources/campaigns.rbi +115 -0
  137. data/rbi/surge_api/resources/contacts.rbi +85 -0
  138. data/rbi/surge_api/resources/messages.rbi +72 -0
  139. data/rbi/surge_api/resources/phone_numbers.rbi +43 -0
  140. data/rbi/surge_api/resources/users.rbi +96 -0
  141. data/rbi/surge_api/resources/verifications.rbi +43 -0
  142. data/rbi/surge_api/resources/webhooks.rbi +31 -0
  143. data/rbi/surge_api/version.rbi +5 -0
  144. data/sig/surge_api/client.rbs +42 -0
  145. data/sig/surge_api/errors.rbs +117 -0
  146. data/sig/surge_api/file_part.rbs +21 -0
  147. data/sig/surge_api/internal/transport/base_client.rbs +131 -0
  148. data/sig/surge_api/internal/transport/pooled_net_requester.rbs +45 -0
  149. data/sig/surge_api/internal/type/array_of.rbs +48 -0
  150. data/sig/surge_api/internal/type/base_model.rbs +102 -0
  151. data/sig/surge_api/internal/type/base_page.rbs +24 -0
  152. data/sig/surge_api/internal/type/boolean.rbs +26 -0
  153. data/sig/surge_api/internal/type/converter.rbs +79 -0
  154. data/sig/surge_api/internal/type/enum.rbs +32 -0
  155. data/sig/surge_api/internal/type/file_input.rbs +25 -0
  156. data/sig/surge_api/internal/type/hash_of.rbs +48 -0
  157. data/sig/surge_api/internal/type/request_parameters.rbs +17 -0
  158. data/sig/surge_api/internal/type/union.rbs +52 -0
  159. data/sig/surge_api/internal/type/unknown.rbs +26 -0
  160. data/sig/surge_api/internal/util.rbs +185 -0
  161. data/sig/surge_api/internal.rbs +9 -0
  162. data/sig/surge_api/models/account.rbs +40 -0
  163. data/sig/surge_api/models/account_create_params.rbs +433 -0
  164. data/sig/surge_api/models/account_retrieve_status_params.rbs +40 -0
  165. data/sig/surge_api/models/account_status.rbs +71 -0
  166. data/sig/surge_api/models/account_update_params.rbs +435 -0
  167. data/sig/surge_api/models/blast.rbs +64 -0
  168. data/sig/surge_api/models/blast_create_params.rbs +82 -0
  169. data/sig/surge_api/models/call_ended_webhook_event.rbs +99 -0
  170. data/sig/surge_api/models/campaign.rbs +122 -0
  171. data/sig/surge_api/models/campaign_approved_webhook_event.rbs +67 -0
  172. data/sig/surge_api/models/campaign_create_params.rbs +127 -0
  173. data/sig/surge_api/models/contact.rbs +53 -0
  174. data/sig/surge_api/models/contact_create_params.rbs +54 -0
  175. data/sig/surge_api/models/contact_retrieve_params.rbs +15 -0
  176. data/sig/surge_api/models/contact_update_params.rbs +54 -0
  177. data/sig/surge_api/models/conversation_created_webhook_event.rbs +62 -0
  178. data/sig/surge_api/models/error.rbs +27 -0
  179. data/sig/surge_api/models/message.rbs +138 -0
  180. data/sig/surge_api/models/message_create_params.rbs +140 -0
  181. data/sig/surge_api/models/message_delivered_webhook_event.rbs +143 -0
  182. data/sig/surge_api/models/message_failed_webhook_event.rbs +148 -0
  183. data/sig/surge_api/models/message_received_webhook_event.rbs +143 -0
  184. data/sig/surge_api/models/message_sent_webhook_event.rbs +143 -0
  185. data/sig/surge_api/models/organization.rbs +385 -0
  186. data/sig/surge_api/models/phone_number.rbs +37 -0
  187. data/sig/surge_api/models/phone_number_purchase_params.rbs +62 -0
  188. data/sig/surge_api/models/unwrap_webhook_event.rbs +18 -0
  189. data/sig/surge_api/models/user.rbs +48 -0
  190. data/sig/surge_api/models/user_create_params.rbs +47 -0
  191. data/sig/surge_api/models/user_create_token_params.rbs +26 -0
  192. data/sig/surge_api/models/user_retrieve_params.rbs +15 -0
  193. data/sig/surge_api/models/user_token_response.rbs +15 -0
  194. data/sig/surge_api/models/user_update_params.rbs +47 -0
  195. data/sig/surge_api/models/verification.rbs +48 -0
  196. data/sig/surge_api/models/verification_check.rbs +45 -0
  197. data/sig/surge_api/models/verification_check_params.rbs +23 -0
  198. data/sig/surge_api/models/verification_create_params.rbs +23 -0
  199. data/sig/surge_api/models/webhook_unwrap_params.rbs +15 -0
  200. data/sig/surge_api/models.rbs +77 -0
  201. data/sig/surge_api/request_options.rbs +34 -0
  202. data/sig/surge_api/resources/accounts.rbs +30 -0
  203. data/sig/surge_api/resources/blasts.rbs +19 -0
  204. data/sig/surge_api/resources/campaigns.rbs +21 -0
  205. data/sig/surge_api/resources/contacts.rbs +32 -0
  206. data/sig/surge_api/resources/messages.rbs +18 -0
  207. data/sig/surge_api/resources/phone_numbers.rbs +16 -0
  208. data/sig/surge_api/resources/users.rbs +36 -0
  209. data/sig/surge_api/resources/verifications.rbs +18 -0
  210. data/sig/surge_api/resources/webhooks.rbs +17 -0
  211. data/sig/surge_api/version.rbs +3 -0
  212. metadata +269 -0
@@ -0,0 +1,281 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class MessageCreateParams < SurgeAPI::Internal::Type::BaseModel
6
+ extend SurgeAPI::Internal::Type::RequestParameters::Converter
7
+ include SurgeAPI::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(SurgeAPI::MessageCreateParams, SurgeAPI::Internal::AnyHash)
12
+ end
13
+
14
+ # Params for selecting or creating a new conversation. Either the id or the
15
+ # Contact must be given.
16
+ sig { returns(SurgeAPI::MessageCreateParams::Conversation) }
17
+ attr_reader :conversation
18
+
19
+ sig do
20
+ params(
21
+ conversation: SurgeAPI::MessageCreateParams::Conversation::OrHash
22
+ ).void
23
+ end
24
+ attr_writer :conversation
25
+
26
+ sig do
27
+ returns(T.nilable(T::Array[SurgeAPI::MessageCreateParams::Attachment]))
28
+ end
29
+ attr_reader :attachments
30
+
31
+ sig do
32
+ params(
33
+ attachments:
34
+ T::Array[SurgeAPI::MessageCreateParams::Attachment::OrHash]
35
+ ).void
36
+ end
37
+ attr_writer :attachments
38
+
39
+ # The message body.
40
+ sig { returns(T.nilable(String)) }
41
+ attr_reader :body
42
+
43
+ sig { params(body: String).void }
44
+ attr_writer :body
45
+
46
+ # An optional datetime for scheduling message up to a couple of months in the
47
+ # future.
48
+ sig { returns(T.nilable(Time)) }
49
+ attr_reader :send_at
50
+
51
+ sig { params(send_at: Time).void }
52
+ attr_writer :send_at
53
+
54
+ # The recipient's phone number in E.164 format. Cannot be used together with
55
+ # 'conversation'.
56
+ sig { returns(String) }
57
+ attr_accessor :to
58
+
59
+ # The sender's phone number in E.164 format or phone number ID. If omitted, uses
60
+ # the account's default phone number. Cannot be used together with 'conversation'.
61
+ sig { returns(T.nilable(String)) }
62
+ attr_reader :from
63
+
64
+ sig { params(from: String).void }
65
+ attr_writer :from
66
+
67
+ sig do
68
+ params(
69
+ conversation: SurgeAPI::MessageCreateParams::Conversation::OrHash,
70
+ to: String,
71
+ attachments:
72
+ T::Array[SurgeAPI::MessageCreateParams::Attachment::OrHash],
73
+ body: String,
74
+ send_at: Time,
75
+ from: String,
76
+ request_options: SurgeAPI::RequestOptions::OrHash
77
+ ).returns(T.attached_class)
78
+ end
79
+ def self.new(
80
+ # Params for selecting or creating a new conversation. Either the id or the
81
+ # Contact must be given.
82
+ conversation:,
83
+ # The recipient's phone number in E.164 format. Cannot be used together with
84
+ # 'conversation'.
85
+ to:,
86
+ attachments: nil,
87
+ # The message body.
88
+ body: nil,
89
+ # An optional datetime for scheduling message up to a couple of months in the
90
+ # future.
91
+ send_at: nil,
92
+ # The sender's phone number in E.164 format or phone number ID. If omitted, uses
93
+ # the account's default phone number. Cannot be used together with 'conversation'.
94
+ from: nil,
95
+ request_options: {}
96
+ )
97
+ end
98
+
99
+ sig do
100
+ override.returns(
101
+ {
102
+ conversation: SurgeAPI::MessageCreateParams::Conversation,
103
+ attachments: T::Array[SurgeAPI::MessageCreateParams::Attachment],
104
+ body: String,
105
+ send_at: Time,
106
+ to: String,
107
+ from: String,
108
+ request_options: SurgeAPI::RequestOptions
109
+ }
110
+ )
111
+ end
112
+ def to_hash
113
+ end
114
+
115
+ class Conversation < SurgeAPI::Internal::Type::BaseModel
116
+ OrHash =
117
+ T.type_alias do
118
+ T.any(
119
+ SurgeAPI::MessageCreateParams::Conversation,
120
+ SurgeAPI::Internal::AnyHash
121
+ )
122
+ end
123
+
124
+ # Parameters for creating a contact
125
+ sig { returns(SurgeAPI::MessageCreateParams::Conversation::Contact) }
126
+ attr_reader :contact
127
+
128
+ sig do
129
+ params(
130
+ contact:
131
+ SurgeAPI::MessageCreateParams::Conversation::Contact::OrHash
132
+ ).void
133
+ end
134
+ attr_writer :contact
135
+
136
+ # The phone number from which to send the message. This can be either the phone
137
+ # number in E.164 format or a Surge phone number id.
138
+ sig { returns(T.nilable(String)) }
139
+ attr_reader :phone_number
140
+
141
+ sig { params(phone_number: String).void }
142
+ attr_writer :phone_number
143
+
144
+ # Params for selecting or creating a new conversation. Either the id or the
145
+ # Contact must be given.
146
+ sig do
147
+ params(
148
+ contact:
149
+ SurgeAPI::MessageCreateParams::Conversation::Contact::OrHash,
150
+ phone_number: String
151
+ ).returns(T.attached_class)
152
+ end
153
+ def self.new(
154
+ # Parameters for creating a contact
155
+ contact:,
156
+ # The phone number from which to send the message. This can be either the phone
157
+ # number in E.164 format or a Surge phone number id.
158
+ phone_number: nil
159
+ )
160
+ end
161
+
162
+ sig do
163
+ override.returns(
164
+ {
165
+ contact: SurgeAPI::MessageCreateParams::Conversation::Contact,
166
+ phone_number: String
167
+ }
168
+ )
169
+ end
170
+ def to_hash
171
+ end
172
+
173
+ class Contact < SurgeAPI::Internal::Type::BaseModel
174
+ OrHash =
175
+ T.type_alias do
176
+ T.any(
177
+ SurgeAPI::MessageCreateParams::Conversation::Contact,
178
+ SurgeAPI::Internal::AnyHash
179
+ )
180
+ end
181
+
182
+ # The contact's phone number in E.164 format.
183
+ sig { returns(String) }
184
+ attr_accessor :phone_number
185
+
186
+ # The contact's email address.
187
+ sig { returns(T.nilable(String)) }
188
+ attr_reader :email
189
+
190
+ sig { params(email: String).void }
191
+ attr_writer :email
192
+
193
+ # The contact's first name.
194
+ sig { returns(T.nilable(String)) }
195
+ attr_reader :first_name
196
+
197
+ sig { params(first_name: String).void }
198
+ attr_writer :first_name
199
+
200
+ # The contact's last name.
201
+ sig { returns(T.nilable(String)) }
202
+ attr_reader :last_name
203
+
204
+ sig { params(last_name: String).void }
205
+ attr_writer :last_name
206
+
207
+ # Set of key-value pairs that will be stored with the object.
208
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
209
+ attr_reader :metadata
210
+
211
+ sig { params(metadata: T::Hash[Symbol, String]).void }
212
+ attr_writer :metadata
213
+
214
+ # Parameters for creating a contact
215
+ sig do
216
+ params(
217
+ phone_number: String,
218
+ email: String,
219
+ first_name: String,
220
+ last_name: String,
221
+ metadata: T::Hash[Symbol, String]
222
+ ).returns(T.attached_class)
223
+ end
224
+ def self.new(
225
+ # The contact's phone number in E.164 format.
226
+ phone_number:,
227
+ # The contact's email address.
228
+ email: nil,
229
+ # The contact's first name.
230
+ first_name: nil,
231
+ # The contact's last name.
232
+ last_name: nil,
233
+ # Set of key-value pairs that will be stored with the object.
234
+ metadata: nil
235
+ )
236
+ end
237
+
238
+ sig do
239
+ override.returns(
240
+ {
241
+ phone_number: String,
242
+ email: String,
243
+ first_name: String,
244
+ last_name: String,
245
+ metadata: T::Hash[Symbol, String]
246
+ }
247
+ )
248
+ end
249
+ def to_hash
250
+ end
251
+ end
252
+ end
253
+
254
+ class Attachment < SurgeAPI::Internal::Type::BaseModel
255
+ OrHash =
256
+ T.type_alias do
257
+ T.any(
258
+ SurgeAPI::MessageCreateParams::Attachment,
259
+ SurgeAPI::Internal::AnyHash
260
+ )
261
+ end
262
+
263
+ # The URL of the attachment.
264
+ sig { returns(String) }
265
+ attr_accessor :url
266
+
267
+ # Params for creating an attachment
268
+ sig { params(url: String).returns(T.attached_class) }
269
+ def self.new(
270
+ # The URL of the attachment.
271
+ url:
272
+ )
273
+ end
274
+
275
+ sig { override.returns({ url: String }) }
276
+ def to_hash
277
+ end
278
+ end
279
+ end
280
+ end
281
+ end
@@ -0,0 +1,331 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class MessageDeliveredWebhookEvent < SurgeAPI::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ SurgeAPI::MessageDeliveredWebhookEvent,
10
+ SurgeAPI::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The ID of the account in which this event occurred
15
+ sig { returns(String) }
16
+ attr_accessor :account_id
17
+
18
+ # The data associated with the event
19
+ sig { returns(SurgeAPI::MessageDeliveredWebhookEvent::Data) }
20
+ attr_reader :data
21
+
22
+ sig do
23
+ params(data: SurgeAPI::MessageDeliveredWebhookEvent::Data::OrHash).void
24
+ end
25
+ attr_writer :data
26
+
27
+ # The timestamp when this event occurred, in ISO8601 format
28
+ sig { returns(Time) }
29
+ attr_accessor :timestamp
30
+
31
+ # The type of the event. Always `message.delivered` for this event.
32
+ sig { returns(Symbol) }
33
+ attr_accessor :type
34
+
35
+ sig do
36
+ params(
37
+ account_id: String,
38
+ data: SurgeAPI::MessageDeliveredWebhookEvent::Data::OrHash,
39
+ timestamp: Time,
40
+ type: Symbol
41
+ ).returns(T.attached_class)
42
+ end
43
+ def self.new(
44
+ # The ID of the account in which this event occurred
45
+ account_id:,
46
+ # The data associated with the event
47
+ data:,
48
+ # The timestamp when this event occurred, in ISO8601 format
49
+ timestamp:,
50
+ # The type of the event. Always `message.delivered` for this event.
51
+ type: :"message.delivered"
52
+ )
53
+ end
54
+
55
+ sig do
56
+ override.returns(
57
+ {
58
+ account_id: String,
59
+ data: SurgeAPI::MessageDeliveredWebhookEvent::Data,
60
+ timestamp: Time,
61
+ type: Symbol
62
+ }
63
+ )
64
+ end
65
+ def to_hash
66
+ end
67
+
68
+ class Data < SurgeAPI::Internal::Type::BaseModel
69
+ OrHash =
70
+ T.type_alias do
71
+ T.any(
72
+ SurgeAPI::MessageDeliveredWebhookEvent::Data,
73
+ SurgeAPI::Internal::AnyHash
74
+ )
75
+ end
76
+
77
+ # The unique identifier for the message
78
+ sig { returns(String) }
79
+ attr_accessor :id
80
+
81
+ # The content of the message
82
+ sig { returns(String) }
83
+ attr_accessor :body
84
+
85
+ # The conversation this message belongs to
86
+ sig do
87
+ returns(SurgeAPI::MessageDeliveredWebhookEvent::Data::Conversation)
88
+ end
89
+ attr_reader :conversation
90
+
91
+ sig do
92
+ params(
93
+ conversation:
94
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Conversation::OrHash
95
+ ).void
96
+ end
97
+ attr_writer :conversation
98
+
99
+ # When the message was delivered
100
+ sig { returns(Time) }
101
+ attr_accessor :delivered_at
102
+
103
+ # Attachments included with the message
104
+ sig do
105
+ returns(
106
+ T.nilable(
107
+ T::Array[SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment]
108
+ )
109
+ )
110
+ end
111
+ attr_reader :attachments
112
+
113
+ sig do
114
+ params(
115
+ attachments:
116
+ T::Array[
117
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::OrHash
118
+ ]
119
+ ).void
120
+ end
121
+ attr_writer :attachments
122
+
123
+ # The data associated with the event
124
+ sig do
125
+ params(
126
+ id: String,
127
+ body: String,
128
+ conversation:
129
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Conversation::OrHash,
130
+ delivered_at: Time,
131
+ attachments:
132
+ T::Array[
133
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::OrHash
134
+ ]
135
+ ).returns(T.attached_class)
136
+ end
137
+ def self.new(
138
+ # The unique identifier for the message
139
+ id:,
140
+ # The content of the message
141
+ body:,
142
+ # The conversation this message belongs to
143
+ conversation:,
144
+ # When the message was delivered
145
+ delivered_at:,
146
+ # Attachments included with the message
147
+ attachments: nil
148
+ )
149
+ end
150
+
151
+ sig do
152
+ override.returns(
153
+ {
154
+ id: String,
155
+ body: String,
156
+ conversation:
157
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Conversation,
158
+ delivered_at: Time,
159
+ attachments:
160
+ T::Array[
161
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment
162
+ ]
163
+ }
164
+ )
165
+ end
166
+ def to_hash
167
+ end
168
+
169
+ class Conversation < SurgeAPI::Internal::Type::BaseModel
170
+ OrHash =
171
+ T.type_alias do
172
+ T.any(
173
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Conversation,
174
+ SurgeAPI::Internal::AnyHash
175
+ )
176
+ end
177
+
178
+ # The unique identifier for the conversation
179
+ sig { returns(String) }
180
+ attr_accessor :id
181
+
182
+ # A contact who has consented to receive messages
183
+ sig { returns(SurgeAPI::Contact) }
184
+ attr_reader :contact
185
+
186
+ sig { params(contact: SurgeAPI::Contact::OrHash).void }
187
+ attr_writer :contact
188
+
189
+ # A phone number that can be used to send and receive messages and calls
190
+ sig { returns(SurgeAPI::PhoneNumber) }
191
+ attr_reader :phone_number
192
+
193
+ sig { params(phone_number: SurgeAPI::PhoneNumber::OrHash).void }
194
+ attr_writer :phone_number
195
+
196
+ # The conversation this message belongs to
197
+ sig do
198
+ params(
199
+ id: String,
200
+ contact: SurgeAPI::Contact::OrHash,
201
+ phone_number: SurgeAPI::PhoneNumber::OrHash
202
+ ).returns(T.attached_class)
203
+ end
204
+ def self.new(
205
+ # The unique identifier for the conversation
206
+ id:,
207
+ # A contact who has consented to receive messages
208
+ contact:,
209
+ # A phone number that can be used to send and receive messages and calls
210
+ phone_number:
211
+ )
212
+ end
213
+
214
+ sig do
215
+ override.returns(
216
+ {
217
+ id: String,
218
+ contact: SurgeAPI::Contact,
219
+ phone_number: SurgeAPI::PhoneNumber
220
+ }
221
+ )
222
+ end
223
+ def to_hash
224
+ end
225
+ end
226
+
227
+ class Attachment < SurgeAPI::Internal::Type::BaseModel
228
+ OrHash =
229
+ T.type_alias do
230
+ T.any(
231
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment,
232
+ SurgeAPI::Internal::AnyHash
233
+ )
234
+ end
235
+
236
+ # The unique identifier for the attachment
237
+ sig { returns(String) }
238
+ attr_accessor :id
239
+
240
+ # The type of attachment
241
+ sig do
242
+ returns(
243
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::Type::TaggedSymbol
244
+ )
245
+ end
246
+ attr_accessor :type
247
+
248
+ # The URL where the attachment can be downloaded
249
+ sig { returns(String) }
250
+ attr_accessor :url
251
+
252
+ sig do
253
+ params(
254
+ id: String,
255
+ type:
256
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::Type::OrSymbol,
257
+ url: String
258
+ ).returns(T.attached_class)
259
+ end
260
+ def self.new(
261
+ # The unique identifier for the attachment
262
+ id:,
263
+ # The type of attachment
264
+ type:,
265
+ # The URL where the attachment can be downloaded
266
+ url:
267
+ )
268
+ end
269
+
270
+ sig do
271
+ override.returns(
272
+ {
273
+ id: String,
274
+ type:
275
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::Type::TaggedSymbol,
276
+ url: String
277
+ }
278
+ )
279
+ end
280
+ def to_hash
281
+ end
282
+
283
+ # The type of attachment
284
+ module Type
285
+ extend SurgeAPI::Internal::Type::Enum
286
+
287
+ TaggedSymbol =
288
+ T.type_alias do
289
+ T.all(
290
+ Symbol,
291
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::Type
292
+ )
293
+ end
294
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
295
+
296
+ FILE =
297
+ T.let(
298
+ :file,
299
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::Type::TaggedSymbol
300
+ )
301
+ IMAGE =
302
+ T.let(
303
+ :image,
304
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::Type::TaggedSymbol
305
+ )
306
+ LINK =
307
+ T.let(
308
+ :link,
309
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::Type::TaggedSymbol
310
+ )
311
+ VIDEO =
312
+ T.let(
313
+ :video,
314
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::Type::TaggedSymbol
315
+ )
316
+
317
+ sig do
318
+ override.returns(
319
+ T::Array[
320
+ SurgeAPI::MessageDeliveredWebhookEvent::Data::Attachment::Type::TaggedSymbol
321
+ ]
322
+ )
323
+ end
324
+ def self.values
325
+ end
326
+ end
327
+ end
328
+ end
329
+ end
330
+ end
331
+ end