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,108 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class Blast < SurgeAPI::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias { T.any(SurgeAPI::Blast, SurgeAPI::Internal::AnyHash) }
8
+
9
+ # Unique identifier for the object.
10
+ sig { returns(T.nilable(String)) }
11
+ attr_reader :id
12
+
13
+ sig { params(id: String).void }
14
+ attr_writer :id
15
+
16
+ sig { returns(T.nilable(T::Array[SurgeAPI::Blast::Attachment])) }
17
+ attr_reader :attachments
18
+
19
+ sig do
20
+ params(attachments: T::Array[SurgeAPI::Blast::Attachment::OrHash]).void
21
+ end
22
+ attr_writer :attachments
23
+
24
+ # The message body.
25
+ sig { returns(T.nilable(String)) }
26
+ attr_reader :body
27
+
28
+ sig { params(body: String).void }
29
+ attr_writer :body
30
+
31
+ # Optional name for the blast.
32
+ sig { returns(T.nilable(String)) }
33
+ attr_reader :name
34
+
35
+ sig { params(name: String).void }
36
+ attr_writer :name
37
+
38
+ # When the blast will be or was sent.
39
+ sig { returns(T.nilable(Time)) }
40
+ attr_reader :send_at
41
+
42
+ sig { params(send_at: Time).void }
43
+ attr_writer :send_at
44
+
45
+ # A Blast is a message sent to multiple recipients at once.
46
+ sig do
47
+ params(
48
+ id: String,
49
+ attachments: T::Array[SurgeAPI::Blast::Attachment::OrHash],
50
+ body: String,
51
+ name: String,
52
+ send_at: Time
53
+ ).returns(T.attached_class)
54
+ end
55
+ def self.new(
56
+ # Unique identifier for the object.
57
+ id: nil,
58
+ attachments: nil,
59
+ # The message body.
60
+ body: nil,
61
+ # Optional name for the blast.
62
+ name: nil,
63
+ # When the blast will be or was sent.
64
+ send_at: nil
65
+ )
66
+ end
67
+
68
+ sig do
69
+ override.returns(
70
+ {
71
+ id: String,
72
+ attachments: T::Array[SurgeAPI::Blast::Attachment],
73
+ body: String,
74
+ name: String,
75
+ send_at: Time
76
+ }
77
+ )
78
+ end
79
+ def to_hash
80
+ end
81
+
82
+ class Attachment < SurgeAPI::Internal::Type::BaseModel
83
+ OrHash =
84
+ T.type_alias do
85
+ T.any(SurgeAPI::Blast::Attachment, SurgeAPI::Internal::AnyHash)
86
+ end
87
+
88
+ # The URL of the attachment.
89
+ sig { returns(T.nilable(String)) }
90
+ attr_reader :url
91
+
92
+ sig { params(url: String).void }
93
+ attr_writer :url
94
+
95
+ sig { params(url: String).returns(T.attached_class) }
96
+ def self.new(
97
+ # The URL of the attachment.
98
+ url: nil
99
+ )
100
+ end
101
+
102
+ sig { override.returns({ url: String }) }
103
+ def to_hash
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,145 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class BlastCreateParams < 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::BlastCreateParams, SurgeAPI::Internal::AnyHash)
12
+ end
13
+
14
+ sig do
15
+ returns(T.nilable(T::Array[SurgeAPI::BlastCreateParams::Attachment]))
16
+ end
17
+ attr_reader :attachments
18
+
19
+ sig do
20
+ params(
21
+ attachments: T::Array[SurgeAPI::BlastCreateParams::Attachment::OrHash]
22
+ ).void
23
+ end
24
+ attr_writer :attachments
25
+
26
+ # The message body.
27
+ sig { returns(T.nilable(String)) }
28
+ attr_reader :body
29
+
30
+ sig { params(body: String).void }
31
+ attr_writer :body
32
+
33
+ # Deprecated. Use `to` instead.
34
+ sig { returns(T.nilable(T::Array[String])) }
35
+ attr_reader :contacts
36
+
37
+ sig { params(contacts: T::Array[String]).void }
38
+ attr_writer :contacts
39
+
40
+ # Optional name for the blast.
41
+ sig { returns(T.nilable(String)) }
42
+ attr_reader :name
43
+
44
+ sig { params(name: String).void }
45
+ attr_writer :name
46
+
47
+ # Deprecated. Use `to` instead.
48
+ sig { returns(T.nilable(T::Array[String])) }
49
+ attr_reader :segments
50
+
51
+ sig { params(segments: T::Array[String]).void }
52
+ attr_writer :segments
53
+
54
+ # When to send the blast. If not provided, sends immediately.
55
+ sig { returns(T.nilable(Time)) }
56
+ attr_reader :send_at
57
+
58
+ sig { params(send_at: Time).void }
59
+ attr_writer :send_at
60
+
61
+ # List of recipients to whom the blast should be sent. This can be a combination
62
+ # of contact IDs, segment IDs, and phone numbers.
63
+ sig { returns(T.nilable(T::Array[String])) }
64
+ attr_reader :to
65
+
66
+ sig { params(to: T::Array[String]).void }
67
+ attr_writer :to
68
+
69
+ sig do
70
+ params(
71
+ attachments:
72
+ T::Array[SurgeAPI::BlastCreateParams::Attachment::OrHash],
73
+ body: String,
74
+ contacts: T::Array[String],
75
+ name: String,
76
+ segments: T::Array[String],
77
+ send_at: Time,
78
+ to: T::Array[String],
79
+ request_options: SurgeAPI::RequestOptions::OrHash
80
+ ).returns(T.attached_class)
81
+ end
82
+ def self.new(
83
+ attachments: nil,
84
+ # The message body.
85
+ body: nil,
86
+ # Deprecated. Use `to` instead.
87
+ contacts: nil,
88
+ # Optional name for the blast.
89
+ name: nil,
90
+ # Deprecated. Use `to` instead.
91
+ segments: nil,
92
+ # When to send the blast. If not provided, sends immediately.
93
+ send_at: nil,
94
+ # List of recipients to whom the blast should be sent. This can be a combination
95
+ # of contact IDs, segment IDs, and phone numbers.
96
+ to: nil,
97
+ request_options: {}
98
+ )
99
+ end
100
+
101
+ sig do
102
+ override.returns(
103
+ {
104
+ attachments: T::Array[SurgeAPI::BlastCreateParams::Attachment],
105
+ body: String,
106
+ contacts: T::Array[String],
107
+ name: String,
108
+ segments: T::Array[String],
109
+ send_at: Time,
110
+ to: T::Array[String],
111
+ request_options: SurgeAPI::RequestOptions
112
+ }
113
+ )
114
+ end
115
+ def to_hash
116
+ end
117
+
118
+ class Attachment < SurgeAPI::Internal::Type::BaseModel
119
+ OrHash =
120
+ T.type_alias do
121
+ T.any(
122
+ SurgeAPI::BlastCreateParams::Attachment,
123
+ SurgeAPI::Internal::AnyHash
124
+ )
125
+ end
126
+
127
+ # The URL of the attachment.
128
+ sig { returns(String) }
129
+ attr_accessor :url
130
+
131
+ # Params for creating an attachment
132
+ sig { params(url: String).returns(T.attached_class) }
133
+ def self.new(
134
+ # The URL of the attachment.
135
+ url:
136
+ )
137
+ end
138
+
139
+ sig { override.returns({ url: String }) }
140
+ def to_hash
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,205 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class CallEndedWebhookEvent < SurgeAPI::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(SurgeAPI::CallEndedWebhookEvent, SurgeAPI::Internal::AnyHash)
9
+ end
10
+
11
+ # The ID of the account in which this event occurred
12
+ sig { returns(String) }
13
+ attr_accessor :account_id
14
+
15
+ # The data associated with the event
16
+ sig { returns(SurgeAPI::CallEndedWebhookEvent::Data) }
17
+ attr_reader :data
18
+
19
+ sig { params(data: SurgeAPI::CallEndedWebhookEvent::Data::OrHash).void }
20
+ attr_writer :data
21
+
22
+ # The timestamp when this event occurred, in ISO8601 format
23
+ sig { returns(Time) }
24
+ attr_accessor :timestamp
25
+
26
+ # The type of the event. Always `call.ended` for this event.
27
+ sig { returns(Symbol) }
28
+ attr_accessor :type
29
+
30
+ sig do
31
+ params(
32
+ account_id: String,
33
+ data: SurgeAPI::CallEndedWebhookEvent::Data::OrHash,
34
+ timestamp: Time,
35
+ type: Symbol
36
+ ).returns(T.attached_class)
37
+ end
38
+ def self.new(
39
+ # The ID of the account in which this event occurred
40
+ account_id:,
41
+ # The data associated with the event
42
+ data:,
43
+ # The timestamp when this event occurred, in ISO8601 format
44
+ timestamp:,
45
+ # The type of the event. Always `call.ended` for this event.
46
+ type: :"call.ended"
47
+ )
48
+ end
49
+
50
+ sig do
51
+ override.returns(
52
+ {
53
+ account_id: String,
54
+ data: SurgeAPI::CallEndedWebhookEvent::Data,
55
+ timestamp: Time,
56
+ type: Symbol
57
+ }
58
+ )
59
+ end
60
+ def to_hash
61
+ end
62
+
63
+ class Data < SurgeAPI::Internal::Type::BaseModel
64
+ OrHash =
65
+ T.type_alias do
66
+ T.any(
67
+ SurgeAPI::CallEndedWebhookEvent::Data,
68
+ SurgeAPI::Internal::AnyHash
69
+ )
70
+ end
71
+
72
+ # The unique identifier for the call
73
+ sig { returns(String) }
74
+ attr_accessor :id
75
+
76
+ # A contact who has consented to receive messages
77
+ sig { returns(SurgeAPI::Contact) }
78
+ attr_reader :contact
79
+
80
+ sig { params(contact: SurgeAPI::Contact::OrHash).void }
81
+ attr_writer :contact
82
+
83
+ # The duration of the call in seconds
84
+ sig { returns(Integer) }
85
+ attr_accessor :duration
86
+
87
+ # When the call was initiated
88
+ sig { returns(Time) }
89
+ attr_accessor :initiated_at
90
+
91
+ # The status of the call
92
+ sig do
93
+ returns(SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol)
94
+ end
95
+ attr_accessor :status
96
+
97
+ # The data associated with the event
98
+ sig do
99
+ params(
100
+ id: String,
101
+ contact: SurgeAPI::Contact::OrHash,
102
+ duration: Integer,
103
+ initiated_at: Time,
104
+ status: SurgeAPI::CallEndedWebhookEvent::Data::Status::OrSymbol
105
+ ).returns(T.attached_class)
106
+ end
107
+ def self.new(
108
+ # The unique identifier for the call
109
+ id:,
110
+ # A contact who has consented to receive messages
111
+ contact:,
112
+ # The duration of the call in seconds
113
+ duration:,
114
+ # When the call was initiated
115
+ initiated_at:,
116
+ # The status of the call
117
+ status:
118
+ )
119
+ end
120
+
121
+ sig do
122
+ override.returns(
123
+ {
124
+ id: String,
125
+ contact: SurgeAPI::Contact,
126
+ duration: Integer,
127
+ initiated_at: Time,
128
+ status:
129
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
130
+ }
131
+ )
132
+ end
133
+ def to_hash
134
+ end
135
+
136
+ # The status of the call
137
+ module Status
138
+ extend SurgeAPI::Internal::Type::Enum
139
+
140
+ TaggedSymbol =
141
+ T.type_alias do
142
+ T.all(Symbol, SurgeAPI::CallEndedWebhookEvent::Data::Status)
143
+ end
144
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
145
+
146
+ BUSY =
147
+ T.let(
148
+ :busy,
149
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
150
+ )
151
+ CANCELED =
152
+ T.let(
153
+ :canceled,
154
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
155
+ )
156
+ COMPLETED =
157
+ T.let(
158
+ :completed,
159
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
160
+ )
161
+ FAILED =
162
+ T.let(
163
+ :failed,
164
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
165
+ )
166
+ IN_PROGRESS =
167
+ T.let(
168
+ :in_progress,
169
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
170
+ )
171
+ MISSED =
172
+ T.let(
173
+ :missed,
174
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
175
+ )
176
+ NO_ANSWER =
177
+ T.let(
178
+ :no_answer,
179
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
180
+ )
181
+ QUEUED =
182
+ T.let(
183
+ :queued,
184
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
185
+ )
186
+ RINGING =
187
+ T.let(
188
+ :ringing,
189
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
190
+ )
191
+
192
+ sig do
193
+ override.returns(
194
+ T::Array[
195
+ SurgeAPI::CallEndedWebhookEvent::Data::Status::TaggedSymbol
196
+ ]
197
+ )
198
+ end
199
+ def self.values
200
+ end
201
+ end
202
+ end
203
+ end
204
+ end
205
+ end