telnyx 5.60.0 → 5.62.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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +37 -0
  3. data/README.md +1 -1
  4. data/lib/telnyx/client.rb +10 -5
  5. data/lib/telnyx/errors.rb +0 -10
  6. data/lib/telnyx/lib/webhook_verification.rb +172 -0
  7. data/lib/telnyx/models/ai/assistants/{tag_delete_params.rb → tag_add_params.rb} +2 -2
  8. data/lib/telnyx/models/ai/assistants/{tag_delete_response.rb → tag_add_response.rb} +2 -2
  9. data/lib/telnyx/models/ai/assistants/{tag_create_params.rb → tag_remove_params.rb} +2 -2
  10. data/lib/telnyx/models/ai/assistants/{tag_create_response.rb → tag_remove_response.rb} +2 -2
  11. data/lib/telnyx/models/call_cost_webhook_event.rb +242 -0
  12. data/lib/telnyx/models/calls/action_start_noise_suppression_params.rb +135 -8
  13. data/lib/telnyx/models/text_to_speech_generate_params.rb +3 -3
  14. data/lib/telnyx/models/unsafe_unwrap_webhook_event.rb +3 -1
  15. data/lib/telnyx/models/unwrap_webhook_event.rb +3 -1
  16. data/lib/telnyx/models/voice_clone_create_from_design_params.rb +27 -6
  17. data/lib/telnyx/models/voice_clone_create_from_upload_params.rb +23 -2
  18. data/lib/telnyx/models/voice_clone_create_params.rb +79 -0
  19. data/lib/telnyx/models/voice_clone_create_response.rb +19 -0
  20. data/lib/telnyx/models/voice_clone_data.rb +41 -1
  21. data/lib/telnyx/models/voice_clone_list_params.rb +22 -1
  22. data/lib/telnyx/models/voice_design_create_params.rb +24 -1
  23. data/lib/telnyx/models/voice_design_data.rb +45 -1
  24. data/lib/telnyx/models/voice_design_list_response.rb +32 -1
  25. data/lib/telnyx/models/{voice_design_update_params.rb → voice_design_rename_params.rb} +2 -2
  26. data/lib/telnyx/models/{voice_design_update_response.rb → voice_design_rename_response.rb} +42 -11
  27. data/lib/telnyx/models/whatsapp/business_accounts/{phone_number_create_verification_params.rb → phone_number_initialize_verification_params.rb} +5 -5
  28. data/lib/telnyx/models/whatsapp/template_create_params.rb +530 -0
  29. data/lib/telnyx/models/whatsapp/{message_template_create_response.rb → template_create_response.rb} +2 -2
  30. data/lib/telnyx/models/whatsapp/{message_template_list_params.rb → template_list_params.rb} +5 -5
  31. data/lib/telnyx/models/whatsapp_message_template_delete_params.rb +20 -0
  32. data/lib/telnyx/models/whatsapp_message_template_retrieve_params.rb +20 -0
  33. data/lib/telnyx/models/whatsapp_message_template_retrieve_response.rb +16 -0
  34. data/lib/telnyx/models/whatsapp_message_template_update_params.rb +504 -0
  35. data/lib/telnyx/models/whatsapp_message_template_update_response.rb +16 -0
  36. data/lib/telnyx/models/whatsapp_template_data.rb +10 -3
  37. data/lib/telnyx/models/x402/{credit_account_create_payment_quote_params.rb → credit_account_create_quote_params.rb} +2 -2
  38. data/lib/telnyx/models/x402/{credit_account_create_payment_quote_response.rb → credit_account_create_quote_response.rb} +31 -32
  39. data/lib/telnyx/models/x402/{credit_account_settle_payment_params.rb → credit_account_settle_params.rb} +3 -3
  40. data/lib/telnyx/models/x402/{credit_account_settle_payment_response.rb → credit_account_settle_response.rb} +14 -15
  41. data/lib/telnyx/models.rb +12 -4
  42. data/lib/telnyx/resources/ai/assistants/tags.rb +28 -28
  43. data/lib/telnyx/resources/calls/actions.rb +1 -1
  44. data/lib/telnyx/resources/voice_clones.rb +38 -31
  45. data/lib/telnyx/resources/voice_designs.rb +27 -25
  46. data/lib/telnyx/resources/webhooks.rb +10 -183
  47. data/lib/telnyx/resources/whatsapp/business_accounts/phone_numbers.rb +5 -5
  48. data/lib/telnyx/resources/whatsapp/phone_numbers/profile.rb +0 -4
  49. data/lib/telnyx/resources/whatsapp/templates.rb +91 -0
  50. data/lib/telnyx/resources/whatsapp.rb +3 -3
  51. data/lib/telnyx/resources/whatsapp_message_templates.rb +81 -0
  52. data/lib/telnyx/resources/x402/credit_account.rb +13 -13
  53. data/lib/telnyx/version.rb +1 -1
  54. data/lib/telnyx.rb +25 -24
  55. data/rbi/telnyx/client.rbi +8 -4
  56. data/rbi/telnyx/models/ai/assistants/{tag_create_params.rbi → tag_add_params.rbi} +2 -2
  57. data/rbi/telnyx/models/ai/assistants/{tag_delete_response.rbi → tag_add_response.rbi} +2 -2
  58. data/rbi/telnyx/models/ai/assistants/{tag_delete_params.rbi → tag_remove_params.rbi} +2 -2
  59. data/rbi/telnyx/models/ai/assistants/{tag_create_response.rbi → tag_remove_response.rbi} +2 -2
  60. data/rbi/telnyx/models/call_cost_webhook_event.rbi +485 -0
  61. data/rbi/telnyx/models/calls/action_start_noise_suppression_params.rbi +338 -12
  62. data/rbi/telnyx/models/text_to_speech_generate_params.rbi +2 -1
  63. data/rbi/telnyx/models/unsafe_unwrap_webhook_event.rbi +1 -0
  64. data/rbi/telnyx/models/unwrap_webhook_event.rbi +1 -0
  65. data/rbi/telnyx/models/voice_clone_create_from_design_params.rbi +51 -0
  66. data/rbi/telnyx/models/voice_clone_create_from_upload_params.rbi +67 -2
  67. data/rbi/telnyx/models/voice_clone_create_params.rbi +142 -0
  68. data/rbi/telnyx/models/voice_clone_create_response.rbi +36 -0
  69. data/rbi/telnyx/models/voice_clone_data.rbi +57 -0
  70. data/rbi/telnyx/models/voice_clone_list_params.rbi +62 -0
  71. data/rbi/telnyx/models/voice_design_create_params.rbi +60 -0
  72. data/rbi/telnyx/models/voice_design_data.rbi +59 -0
  73. data/rbi/telnyx/models/voice_design_list_response.rbi +73 -0
  74. data/rbi/telnyx/models/{voice_design_update_params.rbi → voice_design_rename_params.rbi} +2 -2
  75. data/rbi/telnyx/models/{voice_design_update_response.rbi → voice_design_rename_response.rbi} +90 -14
  76. data/rbi/telnyx/models/whatsapp/business_accounts/{phone_number_create_verification_params.rbi → phone_number_initialize_verification_params.rbi} +10 -10
  77. data/rbi/telnyx/models/whatsapp/template_create_params.rbi +1177 -0
  78. data/rbi/telnyx/models/whatsapp/{message_template_create_response.rbi → template_create_response.rbi} +2 -2
  79. data/rbi/telnyx/models/whatsapp/{message_template_list_params.rbi → template_list_params.rbi} +11 -11
  80. data/rbi/telnyx/models/whatsapp_message_template_delete_params.rbi +38 -0
  81. data/rbi/telnyx/models/whatsapp_message_template_retrieve_params.rbi +38 -0
  82. data/rbi/telnyx/models/whatsapp_message_template_retrieve_response.rbi +33 -0
  83. data/rbi/telnyx/models/whatsapp_message_template_update_params.rbi +1178 -0
  84. data/rbi/telnyx/models/whatsapp_message_template_update_response.rbi +33 -0
  85. data/rbi/telnyx/models/whatsapp_template_data.rbi +10 -2
  86. data/rbi/telnyx/models/x402/{credit_account_create_payment_quote_params.rbi → credit_account_create_quote_params.rbi} +2 -2
  87. data/rbi/telnyx/models/x402/{credit_account_create_payment_quote_response.rbi → credit_account_create_quote_response.rbi} +41 -42
  88. data/rbi/telnyx/models/x402/{credit_account_settle_payment_params.rbi → credit_account_settle_params.rbi} +2 -2
  89. data/rbi/telnyx/models/x402/{credit_account_settle_payment_response.rbi → credit_account_settle_response.rbi} +21 -26
  90. data/rbi/telnyx/models.rbi +29 -3
  91. data/rbi/telnyx/resources/ai/assistants/tags.rbi +13 -13
  92. data/rbi/telnyx/resources/calls/actions.rbi +4 -3
  93. data/rbi/telnyx/resources/voice_clones.rbi +36 -25
  94. data/rbi/telnyx/resources/voice_designs.rbi +21 -17
  95. data/rbi/telnyx/resources/webhooks.rbi +12 -2
  96. data/rbi/telnyx/resources/whatsapp/business_accounts/phone_numbers.rbi +2 -2
  97. data/rbi/telnyx/resources/whatsapp/phone_numbers/profile.rbi +0 -5
  98. data/rbi/telnyx/resources/whatsapp/templates.rbi +85 -0
  99. data/rbi/telnyx/resources/whatsapp.rbi +2 -2
  100. data/rbi/telnyx/resources/whatsapp_message_templates.rbi +67 -0
  101. data/rbi/telnyx/resources/x402/credit_account.rbi +4 -6
  102. data/sig/telnyx/client.rbs +4 -2
  103. data/sig/telnyx/models/ai/assistants/{tag_delete_params.rbs → tag_add_params.rbs} +2 -2
  104. data/sig/telnyx/models/ai/assistants/{tag_delete_response.rbs → tag_add_response.rbs} +2 -2
  105. data/sig/telnyx/models/ai/assistants/{tag_create_params.rbs → tag_remove_params.rbs} +2 -2
  106. data/sig/telnyx/models/ai/assistants/{tag_create_response.rbs → tag_remove_response.rbs} +2 -2
  107. data/sig/telnyx/models/call_cost_webhook_event.rbs +235 -0
  108. data/sig/telnyx/models/calls/action_start_noise_suppression_params.rbs +124 -4
  109. data/sig/telnyx/models/unsafe_unwrap_webhook_event.rbs +1 -0
  110. data/sig/telnyx/models/unwrap_webhook_event.rbs +1 -0
  111. data/sig/telnyx/models/voice_clone_create_from_design_params.rbs +23 -1
  112. data/sig/telnyx/models/voice_clone_create_from_upload_params.rbs +22 -0
  113. data/sig/telnyx/models/voice_clone_create_params.rbs +75 -0
  114. data/sig/telnyx/models/voice_clone_create_response.rbs +15 -0
  115. data/sig/telnyx/models/voice_clone_data.rbs +34 -0
  116. data/sig/telnyx/models/voice_clone_list_params.rbs +22 -0
  117. data/sig/telnyx/models/voice_design_create_params.rbs +22 -0
  118. data/sig/telnyx/models/voice_design_data.rbs +30 -0
  119. data/sig/telnyx/models/voice_design_list_response.rbs +25 -0
  120. data/sig/telnyx/models/{voice_design_update_params.rbs → voice_design_rename_params.rbs} +2 -2
  121. data/sig/telnyx/models/voice_design_rename_response.rbs +104 -0
  122. data/sig/telnyx/models/whatsapp/business_accounts/{phone_number_create_verification_params.rbs → phone_number_initialize_verification_params.rbs} +9 -9
  123. data/sig/telnyx/models/whatsapp/template_create_params.rbs +479 -0
  124. data/sig/telnyx/models/whatsapp/{message_template_update_response.rbs → template_create_response.rbs} +2 -3
  125. data/sig/telnyx/models/whatsapp/{message_template_list_params.rbs → template_list_params.rbs} +9 -9
  126. data/sig/telnyx/models/whatsapp_message_template_delete_params.rbs +20 -0
  127. data/sig/telnyx/models/whatsapp_message_template_retrieve_params.rbs +20 -0
  128. data/sig/telnyx/models/whatsapp_message_template_retrieve_response.rbs +16 -0
  129. data/sig/telnyx/models/whatsapp_message_template_update_params.rbs +473 -0
  130. data/sig/telnyx/models/whatsapp_message_template_update_response.rbs +16 -0
  131. data/sig/telnyx/models/x402/{credit_account_create_payment_quote_params.rbs → credit_account_create_quote_params.rbs} +2 -2
  132. data/sig/telnyx/models/x402/{credit_account_create_payment_quote_response.rbs → credit_account_create_quote_response.rbs} +46 -48
  133. data/sig/telnyx/models/x402/{credit_account_settle_payment_params.rbs → credit_account_settle_params.rbs} +2 -2
  134. data/sig/telnyx/models/x402/{credit_account_settle_payment_response.rbs → credit_account_settle_response.rbs} +22 -22
  135. data/sig/telnyx/models.rbs +12 -4
  136. data/sig/telnyx/resources/ai/assistants/tags.rbs +8 -8
  137. data/sig/telnyx/resources/voice_clones.rbs +11 -8
  138. data/sig/telnyx/resources/voice_designs.rbs +7 -6
  139. data/sig/telnyx/resources/webhooks.rbs +5 -1
  140. data/sig/telnyx/resources/whatsapp/business_accounts/phone_numbers.rbs +2 -2
  141. data/sig/telnyx/resources/whatsapp/phone_numbers/profile.rbs +0 -2
  142. data/sig/telnyx/resources/whatsapp/templates.rbs +28 -0
  143. data/sig/telnyx/resources/whatsapp.rbs +1 -1
  144. data/sig/telnyx/resources/whatsapp_message_templates.rbs +21 -0
  145. data/sig/telnyx/resources/x402/credit_account.rbs +4 -4
  146. metadata +75 -65
  147. data/lib/telnyx/models/whatsapp/message_template_create_params.rb +0 -58
  148. data/lib/telnyx/models/whatsapp/message_template_delete_params.rb +0 -22
  149. data/lib/telnyx/models/whatsapp/message_template_retrieve_params.rb +0 -22
  150. data/lib/telnyx/models/whatsapp/message_template_retrieve_response.rb +0 -18
  151. data/lib/telnyx/models/whatsapp/message_template_update_params.rb +0 -46
  152. data/lib/telnyx/models/whatsapp/message_template_update_response.rb +0 -18
  153. data/lib/telnyx/resources/whatsapp/message_templates.rb +0 -149
  154. data/lib/telnyx/resources/whatsapp/phone_numbers/profile/models.rb +0 -20
  155. data/rbi/telnyx/models/whatsapp/message_template_create_params.rbi +0 -115
  156. data/rbi/telnyx/models/whatsapp/message_template_delete_params.rbi +0 -40
  157. data/rbi/telnyx/models/whatsapp/message_template_retrieve_params.rbi +0 -40
  158. data/rbi/telnyx/models/whatsapp/message_template_retrieve_response.rbi +0 -35
  159. data/rbi/telnyx/models/whatsapp/message_template_update_params.rbi +0 -111
  160. data/rbi/telnyx/models/whatsapp/message_template_update_response.rbi +0 -35
  161. data/rbi/telnyx/resources/whatsapp/message_templates.rbi +0 -116
  162. data/rbi/telnyx/resources/whatsapp/phone_numbers/profile/models.rbi +0 -18
  163. data/sig/telnyx/models/voice_design_update_response.rbs +0 -79
  164. data/sig/telnyx/models/whatsapp/message_template_create_params.rbs +0 -60
  165. data/sig/telnyx/models/whatsapp/message_template_create_response.rbs +0 -20
  166. data/sig/telnyx/models/whatsapp/message_template_delete_params.rbs +0 -22
  167. data/sig/telnyx/models/whatsapp/message_template_retrieve_params.rbs +0 -22
  168. data/sig/telnyx/models/whatsapp/message_template_retrieve_response.rbs +0 -20
  169. data/sig/telnyx/models/whatsapp/message_template_update_params.rbs +0 -58
  170. data/sig/telnyx/resources/whatsapp/message_templates.rbs +0 -42
  171. data/sig/telnyx/resources/whatsapp/phone_numbers/profile/models.rbs +0 -13
@@ -0,0 +1,485 @@
1
+ # typed: strong
2
+
3
+ module Telnyx
4
+ module Models
5
+ class CallCostWebhookEvent < Telnyx::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Telnyx::CallCostWebhookEvent, Telnyx::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T.nilable(Telnyx::CallCostWebhookEvent::Data)) }
12
+ attr_reader :data
13
+
14
+ sig { params(data: Telnyx::CallCostWebhookEvent::Data::OrHash).void }
15
+ attr_writer :data
16
+
17
+ sig do
18
+ params(data: Telnyx::CallCostWebhookEvent::Data::OrHash).returns(
19
+ T.attached_class
20
+ )
21
+ end
22
+ def self.new(data: nil)
23
+ end
24
+
25
+ sig { override.returns({ data: Telnyx::CallCostWebhookEvent::Data }) }
26
+ def to_hash
27
+ end
28
+
29
+ class Data < Telnyx::Internal::Type::BaseModel
30
+ OrHash =
31
+ T.type_alias do
32
+ T.any(Telnyx::CallCostWebhookEvent::Data, Telnyx::Internal::AnyHash)
33
+ end
34
+
35
+ # Unique identifier of the event.
36
+ sig { returns(T.nilable(String)) }
37
+ attr_reader :id
38
+
39
+ sig { params(id: String).void }
40
+ attr_writer :id
41
+
42
+ # The type of event being delivered.
43
+ sig do
44
+ returns(
45
+ T.nilable(
46
+ Telnyx::CallCostWebhookEvent::Data::EventType::TaggedSymbol
47
+ )
48
+ )
49
+ end
50
+ attr_reader :event_type
51
+
52
+ sig do
53
+ params(
54
+ event_type: Telnyx::CallCostWebhookEvent::Data::EventType::OrSymbol
55
+ ).void
56
+ end
57
+ attr_writer :event_type
58
+
59
+ # ISO 8601 datetime of when the event occurred.
60
+ sig { returns(T.nilable(Time)) }
61
+ attr_reader :occurred_at
62
+
63
+ sig { params(occurred_at: Time).void }
64
+ attr_writer :occurred_at
65
+
66
+ sig { returns(T.nilable(Telnyx::CallCostWebhookEvent::Data::Payload)) }
67
+ attr_reader :payload
68
+
69
+ sig do
70
+ params(
71
+ payload: Telnyx::CallCostWebhookEvent::Data::Payload::OrHash
72
+ ).void
73
+ end
74
+ attr_writer :payload
75
+
76
+ # Identifies the type of the resource.
77
+ sig do
78
+ returns(
79
+ T.nilable(
80
+ Telnyx::CallCostWebhookEvent::Data::RecordType::TaggedSymbol
81
+ )
82
+ )
83
+ end
84
+ attr_reader :record_type
85
+
86
+ sig do
87
+ params(
88
+ record_type:
89
+ Telnyx::CallCostWebhookEvent::Data::RecordType::OrSymbol
90
+ ).void
91
+ end
92
+ attr_writer :record_type
93
+
94
+ sig do
95
+ params(
96
+ id: String,
97
+ event_type: Telnyx::CallCostWebhookEvent::Data::EventType::OrSymbol,
98
+ occurred_at: Time,
99
+ payload: Telnyx::CallCostWebhookEvent::Data::Payload::OrHash,
100
+ record_type:
101
+ Telnyx::CallCostWebhookEvent::Data::RecordType::OrSymbol
102
+ ).returns(T.attached_class)
103
+ end
104
+ def self.new(
105
+ # Unique identifier of the event.
106
+ id: nil,
107
+ # The type of event being delivered.
108
+ event_type: nil,
109
+ # ISO 8601 datetime of when the event occurred.
110
+ occurred_at: nil,
111
+ payload: nil,
112
+ # Identifies the type of the resource.
113
+ record_type: nil
114
+ )
115
+ end
116
+
117
+ sig do
118
+ override.returns(
119
+ {
120
+ id: String,
121
+ event_type:
122
+ Telnyx::CallCostWebhookEvent::Data::EventType::TaggedSymbol,
123
+ occurred_at: Time,
124
+ payload: Telnyx::CallCostWebhookEvent::Data::Payload,
125
+ record_type:
126
+ Telnyx::CallCostWebhookEvent::Data::RecordType::TaggedSymbol
127
+ }
128
+ )
129
+ end
130
+ def to_hash
131
+ end
132
+
133
+ # The type of event being delivered.
134
+ module EventType
135
+ extend Telnyx::Internal::Type::Enum
136
+
137
+ TaggedSymbol =
138
+ T.type_alias do
139
+ T.all(Symbol, Telnyx::CallCostWebhookEvent::Data::EventType)
140
+ end
141
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
142
+
143
+ CALL_COST =
144
+ T.let(
145
+ :"call.cost",
146
+ Telnyx::CallCostWebhookEvent::Data::EventType::TaggedSymbol
147
+ )
148
+
149
+ sig do
150
+ override.returns(
151
+ T::Array[
152
+ Telnyx::CallCostWebhookEvent::Data::EventType::TaggedSymbol
153
+ ]
154
+ )
155
+ end
156
+ def self.values
157
+ end
158
+ end
159
+
160
+ class Payload < Telnyx::Internal::Type::BaseModel
161
+ OrHash =
162
+ T.type_alias do
163
+ T.any(
164
+ Telnyx::CallCostWebhookEvent::Data::Payload,
165
+ Telnyx::Internal::AnyHash
166
+ )
167
+ end
168
+
169
+ # The longest billed duration across all cost parts, in seconds.
170
+ sig { returns(T.nilable(Integer)) }
171
+ attr_accessor :billed_duration_secs
172
+
173
+ # Identifies the billing group associated with the call.
174
+ sig { returns(T.nilable(String)) }
175
+ attr_accessor :billing_group_id
176
+
177
+ # Call ID used to issue commands via Call Control API.
178
+ sig { returns(T.nilable(String)) }
179
+ attr_reader :call_control_id
180
+
181
+ sig { params(call_control_id: String).void }
182
+ attr_writer :call_control_id
183
+
184
+ # ID that is unique to the call and can be used to correlate webhook events.
185
+ sig { returns(T.nilable(String)) }
186
+ attr_reader :call_leg_id
187
+
188
+ sig { params(call_leg_id: String).void }
189
+ attr_writer :call_leg_id
190
+
191
+ # ID that is unique to the call session and can be used to correlate webhook
192
+ # events. Call session is a group of related call legs that logically belong to
193
+ # the same phone call, e.g. an inbound and outbound leg of a transferred call.
194
+ sig { returns(T.nilable(String)) }
195
+ attr_reader :call_session_id
196
+
197
+ sig { params(call_session_id: String).void }
198
+ attr_writer :call_session_id
199
+
200
+ # State received from a command. Base64-encoded.
201
+ sig { returns(T.nilable(String)) }
202
+ attr_reader :client_state
203
+
204
+ sig { params(client_state: String).void }
205
+ attr_writer :client_state
206
+
207
+ # Call Control App ID (formerly Telnyx connection ID) used in the call.
208
+ sig { returns(T.nilable(String)) }
209
+ attr_reader :connection_id
210
+
211
+ sig { params(connection_id: String).void }
212
+ attr_writer :connection_id
213
+
214
+ # Breakdown of costs by call part.
215
+ sig do
216
+ returns(
217
+ T.nilable(
218
+ T::Array[Telnyx::CallCostWebhookEvent::Data::Payload::CostPart]
219
+ )
220
+ )
221
+ end
222
+ attr_reader :cost_parts
223
+
224
+ sig do
225
+ params(
226
+ cost_parts:
227
+ T::Array[
228
+ Telnyx::CallCostWebhookEvent::Data::Payload::CostPart::OrHash
229
+ ]
230
+ ).void
231
+ end
232
+ attr_writer :cost_parts
233
+
234
+ # ISO 8601 datetime of when the event occurred.
235
+ sig { returns(T.nilable(Time)) }
236
+ attr_reader :occurred_at
237
+
238
+ sig { params(occurred_at: Time).void }
239
+ attr_writer :occurred_at
240
+
241
+ # The status of the cost calculation (`success` or `error`).
242
+ sig do
243
+ returns(
244
+ T.nilable(
245
+ Telnyx::CallCostWebhookEvent::Data::Payload::Status::TaggedSymbol
246
+ )
247
+ )
248
+ end
249
+ attr_reader :status
250
+
251
+ sig do
252
+ params(
253
+ status:
254
+ Telnyx::CallCostWebhookEvent::Data::Payload::Status::OrSymbol
255
+ ).void
256
+ end
257
+ attr_writer :status
258
+
259
+ # The total cost of the call.
260
+ sig { returns(T.nilable(String)) }
261
+ attr_accessor :total_cost
262
+
263
+ sig do
264
+ params(
265
+ billed_duration_secs: T.nilable(Integer),
266
+ billing_group_id: T.nilable(String),
267
+ call_control_id: String,
268
+ call_leg_id: String,
269
+ call_session_id: String,
270
+ client_state: String,
271
+ connection_id: String,
272
+ cost_parts:
273
+ T::Array[
274
+ Telnyx::CallCostWebhookEvent::Data::Payload::CostPart::OrHash
275
+ ],
276
+ occurred_at: Time,
277
+ status:
278
+ Telnyx::CallCostWebhookEvent::Data::Payload::Status::OrSymbol,
279
+ total_cost: T.nilable(String)
280
+ ).returns(T.attached_class)
281
+ end
282
+ def self.new(
283
+ # The longest billed duration across all cost parts, in seconds.
284
+ billed_duration_secs: nil,
285
+ # Identifies the billing group associated with the call.
286
+ billing_group_id: nil,
287
+ # Call ID used to issue commands via Call Control API.
288
+ call_control_id: nil,
289
+ # ID that is unique to the call and can be used to correlate webhook events.
290
+ call_leg_id: nil,
291
+ # ID that is unique to the call session and can be used to correlate webhook
292
+ # events. Call session is a group of related call legs that logically belong to
293
+ # the same phone call, e.g. an inbound and outbound leg of a transferred call.
294
+ call_session_id: nil,
295
+ # State received from a command. Base64-encoded.
296
+ client_state: nil,
297
+ # Call Control App ID (formerly Telnyx connection ID) used in the call.
298
+ connection_id: nil,
299
+ # Breakdown of costs by call part.
300
+ cost_parts: nil,
301
+ # ISO 8601 datetime of when the event occurred.
302
+ occurred_at: nil,
303
+ # The status of the cost calculation (`success` or `error`).
304
+ status: nil,
305
+ # The total cost of the call.
306
+ total_cost: nil
307
+ )
308
+ end
309
+
310
+ sig do
311
+ override.returns(
312
+ {
313
+ billed_duration_secs: T.nilable(Integer),
314
+ billing_group_id: T.nilable(String),
315
+ call_control_id: String,
316
+ call_leg_id: String,
317
+ call_session_id: String,
318
+ client_state: String,
319
+ connection_id: String,
320
+ cost_parts:
321
+ T::Array[
322
+ Telnyx::CallCostWebhookEvent::Data::Payload::CostPart
323
+ ],
324
+ occurred_at: Time,
325
+ status:
326
+ Telnyx::CallCostWebhookEvent::Data::Payload::Status::TaggedSymbol,
327
+ total_cost: T.nilable(String)
328
+ }
329
+ )
330
+ end
331
+ def to_hash
332
+ end
333
+
334
+ class CostPart < Telnyx::Internal::Type::BaseModel
335
+ OrHash =
336
+ T.type_alias do
337
+ T.any(
338
+ Telnyx::CallCostWebhookEvent::Data::Payload::CostPart,
339
+ Telnyx::Internal::AnyHash
340
+ )
341
+ end
342
+
343
+ # The billed duration in seconds for this part of the call.
344
+ sig { returns(T.nilable(Integer)) }
345
+ attr_reader :billed_duration_secs
346
+
347
+ sig { params(billed_duration_secs: Integer).void }
348
+ attr_writer :billed_duration_secs
349
+
350
+ # The product component this cost applies to. Values are determined by the billing
351
+ # system (e.g. sip-trunking, call-control, call-recording). Not a fixed set — new
352
+ # values may appear as products evolve.
353
+ sig { returns(T.nilable(String)) }
354
+ attr_reader :call_part
355
+
356
+ sig { params(call_part: String).void }
357
+ attr_writer :call_part
358
+
359
+ # The cost for this part of the call.
360
+ sig { returns(T.nilable(String)) }
361
+ attr_reader :cost
362
+
363
+ sig { params(cost: String).void }
364
+ attr_writer :cost
365
+
366
+ # The currency of the cost.
367
+ sig { returns(T.nilable(String)) }
368
+ attr_reader :currency
369
+
370
+ sig { params(currency: String).void }
371
+ attr_writer :currency
372
+
373
+ # The per-minute rate applied.
374
+ sig { returns(T.nilable(String)) }
375
+ attr_reader :rate
376
+
377
+ sig { params(rate: String).void }
378
+ attr_writer :rate
379
+
380
+ sig do
381
+ params(
382
+ billed_duration_secs: Integer,
383
+ call_part: String,
384
+ cost: String,
385
+ currency: String,
386
+ rate: String
387
+ ).returns(T.attached_class)
388
+ end
389
+ def self.new(
390
+ # The billed duration in seconds for this part of the call.
391
+ billed_duration_secs: nil,
392
+ # The product component this cost applies to. Values are determined by the billing
393
+ # system (e.g. sip-trunking, call-control, call-recording). Not a fixed set — new
394
+ # values may appear as products evolve.
395
+ call_part: nil,
396
+ # The cost for this part of the call.
397
+ cost: nil,
398
+ # The currency of the cost.
399
+ currency: nil,
400
+ # The per-minute rate applied.
401
+ rate: nil
402
+ )
403
+ end
404
+
405
+ sig do
406
+ override.returns(
407
+ {
408
+ billed_duration_secs: Integer,
409
+ call_part: String,
410
+ cost: String,
411
+ currency: String,
412
+ rate: String
413
+ }
414
+ )
415
+ end
416
+ def to_hash
417
+ end
418
+ end
419
+
420
+ # The status of the cost calculation (`success` or `error`).
421
+ module Status
422
+ extend Telnyx::Internal::Type::Enum
423
+
424
+ TaggedSymbol =
425
+ T.type_alias do
426
+ T.all(
427
+ Symbol,
428
+ Telnyx::CallCostWebhookEvent::Data::Payload::Status
429
+ )
430
+ end
431
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
432
+
433
+ SUCCESS =
434
+ T.let(
435
+ :success,
436
+ Telnyx::CallCostWebhookEvent::Data::Payload::Status::TaggedSymbol
437
+ )
438
+ ERROR =
439
+ T.let(
440
+ :error,
441
+ Telnyx::CallCostWebhookEvent::Data::Payload::Status::TaggedSymbol
442
+ )
443
+
444
+ sig do
445
+ override.returns(
446
+ T::Array[
447
+ Telnyx::CallCostWebhookEvent::Data::Payload::Status::TaggedSymbol
448
+ ]
449
+ )
450
+ end
451
+ def self.values
452
+ end
453
+ end
454
+ end
455
+
456
+ # Identifies the type of the resource.
457
+ module RecordType
458
+ extend Telnyx::Internal::Type::Enum
459
+
460
+ TaggedSymbol =
461
+ T.type_alias do
462
+ T.all(Symbol, Telnyx::CallCostWebhookEvent::Data::RecordType)
463
+ end
464
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
465
+
466
+ EVENT =
467
+ T.let(
468
+ :event,
469
+ Telnyx::CallCostWebhookEvent::Data::RecordType::TaggedSymbol
470
+ )
471
+
472
+ sig do
473
+ override.returns(
474
+ T::Array[
475
+ Telnyx::CallCostWebhookEvent::Data::RecordType::TaggedSymbol
476
+ ]
477
+ )
478
+ end
479
+ def self.values
480
+ end
481
+ end
482
+ end
483
+ end
484
+ end
485
+ end