openai 0.88.0 → 0.89.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 (239) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +1 -1
  4. data/lib/openai/client.rb +4 -0
  5. data/lib/openai/models/beta/beta_response_input_item.rb +91 -1
  6. data/lib/openai/models/beta/beta_response_item.rb +93 -1
  7. data/lib/openai/models/beta/beta_response_output_item.rb +91 -1
  8. data/lib/openai/models/conversations/conversation_item.rb +91 -1
  9. data/lib/openai/models/live/audio_format.rb +109 -0
  10. data/lib/openai/models/live/built_in_voice.rb +38 -0
  11. data/lib/openai/models/live/client_config.rb +22 -0
  12. data/lib/openai/models/live/client_delegation.rb +22 -0
  13. data/lib/openai/models/live/client_event.rb +54 -0
  14. data/lib/openai/models/live/commentary_append_event.rb +59 -0
  15. data/lib/openai/models/live/commentary_appended_event.rb +65 -0
  16. data/lib/openai/models/live/custom_voice.rb +17 -0
  17. data/lib/openai/models/live/data_channel_config.rb +81 -0
  18. data/lib/openai/models/live/delegation_created_event.rb +140 -0
  19. data/lib/openai/models/live/error.rb +60 -0
  20. data/lib/openai/models/live/error_event.rb +52 -0
  21. data/lib/openai/models/live/fork_client_event.rb +53 -0
  22. data/lib/openai/models/live/fork_server_event.rb +295 -0
  23. data/lib/openai/models/live/fork_session_config.rb +107 -0
  24. data/lib/openai/models/live/fork_session_start_event.rb +48 -0
  25. data/lib/openai/models/live/function_tool.rb +60 -0
  26. data/lib/openai/models/live/info_event.rb +60 -0
  27. data/lib/openai/models/live/initial_item.rb +419 -0
  28. data/lib/openai/models/live/input_audio_append_event.rb +50 -0
  29. data/lib/openai/models/live/input_audio_mute_event.rb +33 -0
  30. data/lib/openai/models/live/input_audio_muted_event.rb +42 -0
  31. data/lib/openai/models/live/input_audio_unmute_event.rb +33 -0
  32. data/lib/openai/models/live/input_audio_unmuted_event.rb +42 -0
  33. data/lib/openai/models/live/input_transcript_delta_event.rb +76 -0
  34. data/lib/openai/models/live/instructions_append_event.rb +57 -0
  35. data/lib/openai/models/live/instructions_appended_event.rb +65 -0
  36. data/lib/openai/models/live/live_create_params.rb +57 -0
  37. data/lib/openai/models/live/live_create_response.rb +77 -0
  38. data/lib/openai/models/live/media_session_config.rb +227 -0
  39. data/lib/openai/models/live/media_session_fork_config.rb +75 -0
  40. data/lib/openai/models/live/output_audio_delta_event.rb +58 -0
  41. data/lib/openai/models/live/output_transcript_delta_event.rb +76 -0
  42. data/lib/openai/models/live/response_create_event.rb +33 -0
  43. data/lib/openai/models/live/response_event.rb +67 -0
  44. data/lib/openai/models/live/response_item_create_event.rb +44 -0
  45. data/lib/openai/models/live/responses_delegation_config.rb +332 -0
  46. data/lib/openai/models/live/responses_delegation_update_config.rb +332 -0
  47. data/lib/openai/models/live/server_event.rb +295 -0
  48. data/lib/openai/models/live/server_event_selector.rb +32 -0
  49. data/lib/openai/models/live/session_accept_params.rb +257 -0
  50. data/lib/openai/models/live/session_close_event.rb +33 -0
  51. data/lib/openai/models/live/session_closed_event.rb +113 -0
  52. data/lib/openai/models/live/session_config.rb +236 -0
  53. data/lib/openai/models/live/session_download_recording_params.rb +27 -0
  54. data/lib/openai/models/live/session_fork_params.rb +66 -0
  55. data/lib/openai/models/live/session_fork_response.rb +77 -0
  56. data/lib/openai/models/live/session_hangup_params.rb +22 -0
  57. data/lib/openai/models/live/session_refer_params.rb +34 -0
  58. data/lib/openai/models/live/session_reject_params.rb +32 -0
  59. data/lib/openai/models/live/session_resource.rb +268 -0
  60. data/lib/openai/models/live/session_start_event.rb +46 -0
  61. data/lib/openai/models/live/session_started_event.rb +51 -0
  62. data/lib/openai/models/live/session_update_config.rb +69 -0
  63. data/lib/openai/models/live/session_update_event.rb +46 -0
  64. data/lib/openai/models/live/session_updated_event.rb +51 -0
  65. data/lib/openai/models/live/session_usage.rb +24 -0
  66. data/lib/openai/models/live/session_usage_updated_event.rb +81 -0
  67. data/lib/openai/models/live/thinking_append_event.rb +59 -0
  68. data/lib/openai/models/live/thinking_appended_event.rb +65 -0
  69. data/lib/openai/models/responses/response_input_item.rb +91 -1
  70. data/lib/openai/models/responses/response_item.rb +93 -1
  71. data/lib/openai/models/responses/response_output_item.rb +91 -1
  72. data/lib/openai/models/webhooks/live_call_incoming_webhook_event.rb +12 -7
  73. data/lib/openai/models/webhooks/live_transport_incoming_webhook_event.rb +137 -0
  74. data/lib/openai/models/webhooks/realtime_call_incoming_webhook_event.rb +4 -4
  75. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +9 -2
  76. data/lib/openai/models.rb +2 -0
  77. data/lib/openai/resources/live/forks.rb +16 -0
  78. data/lib/openai/resources/live/sessions.rb +180 -0
  79. data/lib/openai/resources/live/sideband.rb +16 -0
  80. data/lib/openai/resources/live.rb +54 -0
  81. data/lib/openai/resources/webhooks.rb +1 -1
  82. data/lib/openai/version.rb +1 -1
  83. data/lib/openai.rb +65 -0
  84. data/rbi/openai/client.rbi +3 -0
  85. data/rbi/openai/models/beta/beta_response_input_item.rbi +109 -0
  86. data/rbi/openai/models/beta/beta_response_item.rbi +105 -0
  87. data/rbi/openai/models/beta/beta_response_output_item.rbi +119 -0
  88. data/rbi/openai/models/conversations/conversation_item.rbi +133 -0
  89. data/rbi/openai/models/live/audio_format.rbi +185 -0
  90. data/rbi/openai/models/live/built_in_voice.rbi +46 -0
  91. data/rbi/openai/models/live/client_config.rbi +54 -0
  92. data/rbi/openai/models/live/client_delegation.rbi +51 -0
  93. data/rbi/openai/models/live/client_event.rbi +41 -0
  94. data/rbi/openai/models/live/commentary_append_event.rbi +88 -0
  95. data/rbi/openai/models/live/commentary_appended_event.rbi +97 -0
  96. data/rbi/openai/models/live/custom_voice.rbi +46 -0
  97. data/rbi/openai/models/live/data_channel_config.rbi +119 -0
  98. data/rbi/openai/models/live/delegation_created_event.rbi +207 -0
  99. data/rbi/openai/models/live/error.rbi +95 -0
  100. data/rbi/openai/models/live/error_event.rbi +87 -0
  101. data/rbi/openai/models/live/fork_client_event.rbi +40 -0
  102. data/rbi/openai/models/live/fork_server_event.rbi +436 -0
  103. data/rbi/openai/models/live/fork_session_config.rbi +234 -0
  104. data/rbi/openai/models/live/fork_session_start_event.rbi +80 -0
  105. data/rbi/openai/models/live/function_tool.rbi +95 -0
  106. data/rbi/openai/models/live/info_event.rbi +92 -0
  107. data/rbi/openai/models/live/initial_item.rbi +661 -0
  108. data/rbi/openai/models/live/input_audio_append_event.rbi +79 -0
  109. data/rbi/openai/models/live/input_audio_mute_event.rbi +62 -0
  110. data/rbi/openai/models/live/input_audio_muted_event.rbi +74 -0
  111. data/rbi/openai/models/live/input_audio_unmute_event.rbi +62 -0
  112. data/rbi/openai/models/live/input_audio_unmuted_event.rbi +74 -0
  113. data/rbi/openai/models/live/input_transcript_delta_event.rbi +115 -0
  114. data/rbi/openai/models/live/instructions_append_event.rbi +86 -0
  115. data/rbi/openai/models/live/instructions_appended_event.rbi +97 -0
  116. data/rbi/openai/models/live/live_create_params.rbi +121 -0
  117. data/rbi/openai/models/live/live_create_response.rbi +160 -0
  118. data/rbi/openai/models/live/media_session_config.rbi +390 -0
  119. data/rbi/openai/models/live/media_session_fork_config.rbi +143 -0
  120. data/rbi/openai/models/live/output_audio_delta_event.rbi +93 -0
  121. data/rbi/openai/models/live/output_transcript_delta_event.rbi +115 -0
  122. data/rbi/openai/models/live/response_create_event.rbi +62 -0
  123. data/rbi/openai/models/live/response_event.rbi +105 -0
  124. data/rbi/openai/models/live/response_item_create_event.rbi +183 -0
  125. data/rbi/openai/models/live/responses_delegation_config.rbi +562 -0
  126. data/rbi/openai/models/live/responses_delegation_update_config.rbi +585 -0
  127. data/rbi/openai/models/live/server_event.rbi +436 -0
  128. data/rbi/openai/models/live/server_event_selector.rbi +64 -0
  129. data/rbi/openai/models/live/session_accept_params.rbi +451 -0
  130. data/rbi/openai/models/live/session_close_event.rbi +62 -0
  131. data/rbi/openai/models/live/session_closed_event.rbi +148 -0
  132. data/rbi/openai/models/live/session_config.rbi +427 -0
  133. data/rbi/openai/models/live/session_download_recording_params.rbi +57 -0
  134. data/rbi/openai/models/live/session_fork_params.rbi +131 -0
  135. data/rbi/openai/models/live/session_fork_response.rbi +160 -0
  136. data/rbi/openai/models/live/session_hangup_params.rbi +53 -0
  137. data/rbi/openai/models/live/session_refer_params.rbi +64 -0
  138. data/rbi/openai/models/live/session_reject_params.rbi +62 -0
  139. data/rbi/openai/models/live/session_resource.rbi +461 -0
  140. data/rbi/openai/models/live/session_start_event.rbi +78 -0
  141. data/rbi/openai/models/live/session_started_event.rbi +86 -0
  142. data/rbi/openai/models/live/session_update_config.rbi +134 -0
  143. data/rbi/openai/models/live/session_update_event.rbi +78 -0
  144. data/rbi/openai/models/live/session_updated_event.rbi +86 -0
  145. data/rbi/openai/models/live/session_usage.rbi +53 -0
  146. data/rbi/openai/models/live/session_usage_updated_event.rbi +148 -0
  147. data/rbi/openai/models/live/thinking_append_event.rbi +88 -0
  148. data/rbi/openai/models/live/thinking_appended_event.rbi +97 -0
  149. data/rbi/openai/models/responses/response_input_item.rbi +113 -0
  150. data/rbi/openai/models/responses/response_item.rbi +105 -0
  151. data/rbi/openai/models/responses/response_output_item.rbi +125 -0
  152. data/rbi/openai/models/webhooks/live_call_incoming_webhook_event.rbi +11 -7
  153. data/rbi/openai/models/webhooks/live_transport_incoming_webhook_event.rbi +226 -0
  154. data/rbi/openai/models/webhooks/realtime_call_incoming_webhook_event.rbi +4 -4
  155. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -0
  156. data/rbi/openai/models.rbi +2 -0
  157. data/rbi/openai/resources/live/forks.rbi +19 -0
  158. data/rbi/openai/resources/live/sessions.rbi +110 -0
  159. data/rbi/openai/resources/live/sideband.rbi +19 -0
  160. data/rbi/openai/resources/live.rbi +43 -0
  161. data/rbi/openai/resources/responses.rbi +75 -38
  162. data/rbi/openai/resources/webhooks.rbi +1 -0
  163. data/sig/openai/client.rbs +2 -0
  164. data/sig/openai/models/beta/beta_response_input_item.rbs +56 -0
  165. data/sig/openai/models/beta/beta_response_item.rbs +56 -0
  166. data/sig/openai/models/beta/beta_response_output_item.rbs +56 -0
  167. data/sig/openai/models/conversations/conversation_item.rbs +56 -0
  168. data/sig/openai/models/live/audio_format.rbs +73 -0
  169. data/sig/openai/models/live/built_in_voice.rbs +58 -0
  170. data/sig/openai/models/live/client_config.rbs +15 -0
  171. data/sig/openai/models/live/client_delegation.rbs +15 -0
  172. data/sig/openai/models/live/client_event.rbs +24 -0
  173. data/sig/openai/models/live/commentary_append_event.rbs +37 -0
  174. data/sig/openai/models/live/commentary_appended_event.rbs +44 -0
  175. data/sig/openai/models/live/custom_voice.rbs +15 -0
  176. data/sig/openai/models/live/data_channel_config.rbs +56 -0
  177. data/sig/openai/models/live/delegation_created_event.rbs +89 -0
  178. data/sig/openai/models/live/error.rbs +46 -0
  179. data/sig/openai/models/live/error_event.rbs +39 -0
  180. data/sig/openai/models/live/fork_client_event.rbs +24 -0
  181. data/sig/openai/models/live/fork_server_event.rbs +212 -0
  182. data/sig/openai/models/live/fork_session_config.rbs +89 -0
  183. data/sig/openai/models/live/fork_session_start_event.rbs +32 -0
  184. data/sig/openai/models/live/function_tool.rbs +42 -0
  185. data/sig/openai/models/live/info_event.rbs +44 -0
  186. data/sig/openai/models/live/initial_item.rbs +332 -0
  187. data/sig/openai/models/live/input_audio_append_event.rbs +32 -0
  188. data/sig/openai/models/live/input_audio_mute_event.rbs +24 -0
  189. data/sig/openai/models/live/input_audio_muted_event.rbs +34 -0
  190. data/sig/openai/models/live/input_audio_unmute_event.rbs +24 -0
  191. data/sig/openai/models/live/input_audio_unmuted_event.rbs +34 -0
  192. data/sig/openai/models/live/input_transcript_delta_event.rbs +49 -0
  193. data/sig/openai/models/live/instructions_append_event.rbs +37 -0
  194. data/sig/openai/models/live/instructions_appended_event.rbs +44 -0
  195. data/sig/openai/models/live/live_create_params.rbs +45 -0
  196. data/sig/openai/models/live/live_create_response.rbs +49 -0
  197. data/sig/openai/models/live/media_session_config.rbs +157 -0
  198. data/sig/openai/models/live/media_session_fork_config.rbs +66 -0
  199. data/sig/openai/models/live/output_audio_delta_event.rbs +41 -0
  200. data/sig/openai/models/live/output_transcript_delta_event.rbs +49 -0
  201. data/sig/openai/models/live/response_create_event.rbs +18 -0
  202. data/sig/openai/models/live/response_event.rbs +44 -0
  203. data/sig/openai/models/live/response_item_create_event.rbs +32 -0
  204. data/sig/openai/models/live/responses_delegation_config.rbs +244 -0
  205. data/sig/openai/models/live/responses_delegation_update_config.rbs +246 -0
  206. data/sig/openai/models/live/server_event.rbs +212 -0
  207. data/sig/openai/models/live/server_event_selector.rbs +19 -0
  208. data/sig/openai/models/live/session_accept_params.rbs +185 -0
  209. data/sig/openai/models/live/session_close_event.rbs +17 -0
  210. data/sig/openai/models/live/session_closed_event.rbs +68 -0
  211. data/sig/openai/models/live/session_config.rbs +168 -0
  212. data/sig/openai/models/live/session_download_recording_params.rbs +25 -0
  213. data/sig/openai/models/live/session_fork_params.rbs +54 -0
  214. data/sig/openai/models/live/session_fork_response.rbs +49 -0
  215. data/sig/openai/models/live/session_hangup_params.rbs +25 -0
  216. data/sig/openai/models/live/session_refer_params.rbs +33 -0
  217. data/sig/openai/models/live/session_reject_params.rbs +33 -0
  218. data/sig/openai/models/live/session_resource.rbs +183 -0
  219. data/sig/openai/models/live/session_start_event.rbs +32 -0
  220. data/sig/openai/models/live/session_started_event.rbs +39 -0
  221. data/sig/openai/models/live/session_update_config.rbs +56 -0
  222. data/sig/openai/models/live/session_update_event.rbs +32 -0
  223. data/sig/openai/models/live/session_updated_event.rbs +39 -0
  224. data/sig/openai/models/live/session_usage.rbs +15 -0
  225. data/sig/openai/models/live/session_usage_updated_event.rbs +58 -0
  226. data/sig/openai/models/live/thinking_append_event.rbs +37 -0
  227. data/sig/openai/models/live/thinking_appended_event.rbs +44 -0
  228. data/sig/openai/models/responses/response_input_item.rbs +56 -0
  229. data/sig/openai/models/responses/response_item.rbs +56 -0
  230. data/sig/openai/models/responses/response_output_item.rbs +56 -0
  231. data/sig/openai/models/webhooks/live_transport_incoming_webhook_event.rbs +95 -0
  232. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -0
  233. data/sig/openai/models.rbs +2 -0
  234. data/sig/openai/resources/live/forks.rbs +9 -0
  235. data/sig/openai/resources/live/sessions.rbs +44 -0
  236. data/sig/openai/resources/live/sideband.rbs +9 -0
  237. data/sig/openai/resources/live.rbs +19 -0
  238. data/sig/openai/resources/webhooks.rbs +1 -0
  239. metadata +196 -1
@@ -0,0 +1,436 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ # Server events for Live. Response lifecycle events are wrapped inside
9
+ # response.event; dispatch the nested event by its full type and tolerate new
10
+ # response event types. Follow the
11
+ # [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting)
12
+ # when designing the conversation and delegation policy.
13
+ module ServerEvent
14
+ extend OpenAI::Internal::Type::Union
15
+
16
+ Variants = T.type_alias do
17
+ T.any(
18
+ OpenAI::Live::SessionStartedEvent,
19
+ OpenAI::Live::SessionUpdatedEvent,
20
+ OpenAI::Live::InputAudioMutedEvent,
21
+ OpenAI::Live::InputAudioUnmutedEvent,
22
+ OpenAI::Live::InstructionsAppendedEvent,
23
+ OpenAI::Live::ThinkingAppendedEvent,
24
+ OpenAI::Live::CommentaryAppendedEvent,
25
+ OpenAI::Live::ServerEvent::SessionInputAudioAppend,
26
+ OpenAI::Live::OutputAudioDeltaEvent,
27
+ OpenAI::Live::InputTranscriptDeltaEvent,
28
+ OpenAI::Live::OutputTranscriptDeltaEvent,
29
+ OpenAI::Live::DelegationCreatedEvent,
30
+ OpenAI::Live::ResponseEvent,
31
+ OpenAI::Live::SessionUsageUpdatedEvent,
32
+ OpenAI::Live::SessionClosedEvent,
33
+ OpenAI::Live::ErrorEvent,
34
+ OpenAI::Live::InfoEvent,
35
+ OpenAI::Live::ServerEvent::TransportDtmfReceived,
36
+ OpenAI::Live::ServerEvent::TransportDtmfSend,
37
+ OpenAI::Live::ServerEvent::TransportRinging,
38
+ OpenAI::Live::ServerEvent::TransportAnswered,
39
+ OpenAI::Live::ServerEvent::TransportFailed
40
+ )
41
+ end
42
+
43
+ class SessionInputAudioAppend < OpenAI::Internal::Type::BaseModel
44
+ OrHash = T.type_alias do
45
+ T.any(
46
+ OpenAI::Live::ServerEvent::SessionInputAudioAppend,
47
+ OpenAI::Internal::AnyHash
48
+ )
49
+ end
50
+
51
+ # Base64-encoded raw mono PCM16LE at 24 kHz received from the primary transport,
52
+ # reflected to the sideband before model-input muting. This server event uses the
53
+ # same audio key as the client command, but is not an acknowledgment of it.
54
+ sig { returns(String) }
55
+ attr_accessor :audio
56
+
57
+ # The event type, always `session.input_audio.append`.
58
+ sig { returns(Symbol) }
59
+ attr_accessor :type
60
+
61
+ # Input audio received from the primary transport and reflected to a Live sideband
62
+ # connection before model-input muting.
63
+ sig do
64
+ params(
65
+
66
+ audio: String,
67
+
68
+ type: Symbol
69
+ )
70
+ .returns(T.attached_class)
71
+ end
72
+ def self.new(
73
+
74
+ # Base64-encoded raw mono PCM16LE at 24 kHz received from the primary transport,
75
+ # reflected to the sideband before model-input muting. This server event uses the
76
+ # same audio key as the client command, but is not an acknowledgment of it.
77
+ audio:,
78
+
79
+ # The event type, always `session.input_audio.append`.
80
+
81
+ type: :"session.input_audio.append"
82
+ )
83
+ end
84
+
85
+ sig do
86
+ override.returns(
87
+ {audio: String, type: Symbol}
88
+ )
89
+ end
90
+ def to_hash
91
+ end
92
+
93
+ end
94
+
95
+ class TransportDtmfReceived < OpenAI::Internal::Type::BaseModel
96
+ OrHash = T.type_alias do
97
+ T.any(
98
+ OpenAI::Live::ServerEvent::TransportDtmfReceived,
99
+ OpenAI::Internal::AnyHash
100
+ )
101
+ end
102
+
103
+ sig { returns(String) }
104
+ attr_accessor :event
105
+
106
+ sig { returns(String) }
107
+ attr_accessor :event_id
108
+
109
+ sig { returns(Symbol) }
110
+ attr_accessor :type
111
+
112
+ # A SIP DTMF keypress received from the caller. Delivered only to sideband
113
+ # observers.
114
+ sig do
115
+ params(
116
+
117
+ event: String,
118
+
119
+ event_id: String,
120
+
121
+ type: Symbol
122
+ )
123
+ .returns(T.attached_class)
124
+ end
125
+ def self.new(
126
+
127
+ event:,
128
+
129
+ event_id:,
130
+
131
+ type: :"transport.dtmf.received"
132
+ )
133
+ end
134
+
135
+ sig do
136
+ override.returns(
137
+ {event: String, event_id: String, type: Symbol}
138
+ )
139
+ end
140
+ def to_hash
141
+ end
142
+
143
+ end
144
+
145
+ class TransportDtmfSend < OpenAI::Internal::Type::BaseModel
146
+ OrHash = T.type_alias do
147
+ T.any(
148
+ OpenAI::Live::ServerEvent::TransportDtmfSend,
149
+ OpenAI::Internal::AnyHash
150
+ )
151
+ end
152
+
153
+ sig { returns(String) }
154
+ attr_accessor :event
155
+
156
+ sig { returns(String) }
157
+ attr_accessor :event_id
158
+
159
+ sig { returns(Symbol) }
160
+ attr_accessor :type
161
+
162
+ # A SIP DTMF keypress successfully sent by the hosted tool. Delivered only to
163
+ # sideband observers; this is not a client command.
164
+ sig do
165
+ params(
166
+
167
+ event: String,
168
+
169
+ event_id: String,
170
+
171
+ type: Symbol
172
+ )
173
+ .returns(T.attached_class)
174
+ end
175
+ def self.new(
176
+
177
+ event:,
178
+
179
+ event_id:,
180
+
181
+ type: :"transport.dtmf.send"
182
+ )
183
+ end
184
+
185
+ sig do
186
+ override.returns(
187
+ {event: String, event_id: String, type: Symbol}
188
+ )
189
+ end
190
+ def to_hash
191
+ end
192
+
193
+ end
194
+
195
+ class TransportRinging < OpenAI::Internal::Type::BaseModel
196
+ OrHash = T.type_alias do
197
+ T.any(
198
+ OpenAI::Live::ServerEvent::TransportRinging,
199
+ OpenAI::Internal::AnyHash
200
+ )
201
+ end
202
+
203
+ sig { returns(String) }
204
+ attr_accessor :event_id
205
+
206
+ # The canonical Live session ID.
207
+ sig { returns(String) }
208
+ attr_accessor :session_id
209
+
210
+ sig { returns(Symbol) }
211
+ attr_accessor :type
212
+
213
+ # The outbound SIP provider leg is ringing or providing early media. Delivered
214
+ # only to sideband observers.
215
+ sig do
216
+ params(
217
+
218
+ event_id: String,
219
+
220
+ session_id: String,
221
+
222
+ type: Symbol
223
+ )
224
+ .returns(T.attached_class)
225
+ end
226
+ def self.new(
227
+
228
+ event_id:,
229
+
230
+ # The canonical Live session ID.
231
+ session_id:,
232
+
233
+ type: :"transport.ringing"
234
+ )
235
+ end
236
+
237
+ sig do
238
+ override.returns(
239
+ {event_id: String, session_id: String, type: Symbol}
240
+ )
241
+ end
242
+ def to_hash
243
+ end
244
+
245
+ end
246
+
247
+ class TransportAnswered < OpenAI::Internal::Type::BaseModel
248
+ OrHash = T.type_alias do
249
+ T.any(
250
+ OpenAI::Live::ServerEvent::TransportAnswered,
251
+ OpenAI::Internal::AnyHash
252
+ )
253
+ end
254
+
255
+ sig { returns(String) }
256
+ attr_accessor :event_id
257
+
258
+ # The canonical Live session ID.
259
+ sig { returns(String) }
260
+ attr_accessor :session_id
261
+
262
+ sig { returns(Symbol) }
263
+ attr_accessor :type
264
+
265
+ # The outbound SIP provider leg answered and media is established. Delivered only
266
+ # to sideband observers.
267
+ sig do
268
+ params(
269
+
270
+ event_id: String,
271
+
272
+ session_id: String,
273
+
274
+ type: Symbol
275
+ )
276
+ .returns(T.attached_class)
277
+ end
278
+ def self.new(
279
+
280
+ event_id:,
281
+
282
+ # The canonical Live session ID.
283
+ session_id:,
284
+
285
+ type: :"transport.answered"
286
+ )
287
+ end
288
+
289
+ sig do
290
+ override.returns(
291
+ {event_id: String, session_id: String, type: Symbol}
292
+ )
293
+ end
294
+ def to_hash
295
+ end
296
+
297
+ end
298
+
299
+ class TransportFailed < OpenAI::Internal::Type::BaseModel
300
+ OrHash = T.type_alias do
301
+ T.any(
302
+ OpenAI::Live::ServerEvent::TransportFailed,
303
+ OpenAI::Internal::AnyHash
304
+ )
305
+ end
306
+
307
+ sig { returns(OpenAI::Live::ServerEvent::TransportFailed::Error) }
308
+ attr_reader :error
309
+
310
+ sig { params(error: OpenAI::Live::ServerEvent::TransportFailed::Error::OrHash).void }
311
+ attr_writer :error
312
+
313
+ sig { returns(String) }
314
+ attr_accessor :event_id
315
+
316
+ # The canonical Live session ID.
317
+ sig { returns(String) }
318
+ attr_accessor :session_id
319
+
320
+ sig { returns(Symbol) }
321
+ attr_accessor :type
322
+
323
+ # An asynchronous outbound SIP setup failure. Delivered only to sideband
324
+ # observers.
325
+ sig do
326
+ params(
327
+
328
+ error: OpenAI::Live::ServerEvent::TransportFailed::Error::OrHash,
329
+
330
+ event_id: String,
331
+
332
+ session_id: String,
333
+
334
+ type: Symbol
335
+ )
336
+ .returns(T.attached_class)
337
+ end
338
+ def self.new(
339
+
340
+ error:,
341
+
342
+ event_id:,
343
+
344
+ # The canonical Live session ID.
345
+ session_id:,
346
+
347
+ type: :"transport.failed"
348
+ )
349
+ end
350
+
351
+ sig do
352
+ override.returns(
353
+ {
354
+ error: OpenAI::Live::ServerEvent::TransportFailed::Error,
355
+ event_id: String,
356
+ session_id: String,
357
+ type: Symbol
358
+ }
359
+ )
360
+ end
361
+ def to_hash
362
+ end
363
+
364
+ class Error < OpenAI::Internal::Type::BaseModel
365
+ OrHash = T.type_alias do
366
+ T.any(
367
+ OpenAI::Live::ServerEvent::TransportFailed::Error,
368
+ OpenAI::Internal::AnyHash
369
+ )
370
+ end
371
+
372
+ # The call setup failure code.
373
+ sig { returns(String) }
374
+ attr_accessor :code
375
+
376
+ sig { returns(String) }
377
+ attr_accessor :message
378
+
379
+ sig { returns(Symbol) }
380
+ attr_accessor :type
381
+
382
+ # The parameter related to the error, if any. Empty when no parameter applies.
383
+ sig { returns(T.nilable(String)) }
384
+ attr_reader :param
385
+
386
+ sig { params(param: String).void }
387
+ attr_writer :param
388
+
389
+ sig do
390
+ params(
391
+
392
+ code: String,
393
+
394
+ message: String,
395
+
396
+ param: String,
397
+
398
+ type: Symbol
399
+ )
400
+ .returns(T.attached_class)
401
+ end
402
+ def self.new(
403
+
404
+ # The call setup failure code.
405
+ code:,
406
+
407
+ message:,
408
+
409
+ # The parameter related to the error, if any. Empty when no parameter applies.
410
+ param: nil,
411
+
412
+ type: :call_error
413
+ )
414
+ end
415
+
416
+ sig do
417
+ override.returns(
418
+ {code: String, message: String, type: Symbol, param: T.nilable(String)}
419
+ )
420
+ end
421
+ def to_hash
422
+ end
423
+
424
+ end
425
+ end
426
+
427
+ sig { override.returns(T::Array[OpenAI::Live::ServerEvent::Variants]) }
428
+ def self.variants
429
+ end
430
+
431
+ end
432
+
433
+ end
434
+
435
+ end
436
+ end
@@ -0,0 +1,64 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class ServerEventSelector < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::ServerEventSelector,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # The outer Live server event type. Use 'response.event' for Responses events.
18
+ sig { returns(String) }
19
+ attr_accessor :type
20
+
21
+ # The nested Responses event type. Required when type is 'response.event';
22
+ # forbidden for other event types.
23
+ sig { returns(T.nilable(String)) }
24
+ attr_reader :response_event
25
+
26
+ sig { params(response_event: String).void }
27
+ attr_writer :response_event
28
+
29
+ # A Live server event selector for the WebRTC frontend data channel.
30
+ sig do
31
+ params(
32
+
33
+ type: String,
34
+
35
+ response_event: String
36
+ )
37
+ .returns(T.attached_class)
38
+ end
39
+ def self.new(
40
+
41
+ # The outer Live server event type. Use 'response.event' for Responses events.
42
+ type:,
43
+
44
+ # The nested Responses event type. Required when type is 'response.event';
45
+ # forbidden for other event types.
46
+
47
+ response_event: nil
48
+ )
49
+ end
50
+
51
+ sig do
52
+ override.returns(
53
+ {type: String, response_event: String}
54
+ )
55
+ end
56
+ def to_hash
57
+ end
58
+
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+ end