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 ForkServerEvent
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::ForkServerEvent::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::ForkServerEvent::TransportDtmfReceived,
36
+ OpenAI::Live::ForkServerEvent::TransportDtmfSend,
37
+ OpenAI::Live::ForkServerEvent::TransportRinging,
38
+ OpenAI::Live::ForkServerEvent::TransportAnswered,
39
+ OpenAI::Live::ForkServerEvent::TransportFailed
40
+ )
41
+ end
42
+
43
+ class SessionInputAudioAppend < OpenAI::Internal::Type::BaseModel
44
+ OrHash = T.type_alias do
45
+ T.any(
46
+ OpenAI::Live::ForkServerEvent::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::ForkServerEvent::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::ForkServerEvent::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::ForkServerEvent::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::ForkServerEvent::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::ForkServerEvent::TransportFailed,
303
+ OpenAI::Internal::AnyHash
304
+ )
305
+ end
306
+
307
+ sig { returns(OpenAI::Live::ForkServerEvent::TransportFailed::Error) }
308
+ attr_reader :error
309
+
310
+ sig { params(error: OpenAI::Live::ForkServerEvent::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::ForkServerEvent::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::ForkServerEvent::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::ForkServerEvent::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::ForkServerEvent::Variants]) }
428
+ def self.variants
429
+ end
430
+
431
+ end
432
+
433
+ end
434
+
435
+ end
436
+ end
@@ -0,0 +1,234 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Live
7
+
8
+ class ForkSessionConfig < OpenAI::Internal::Type::BaseModel
9
+
10
+ OrHash = T.type_alias do
11
+ T.any(
12
+ OpenAI::Live::ForkSessionConfig,
13
+ OpenAI::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Audio format for a WebSocket fork. WebRTC forks negotiate their audio format and
18
+ # must omit this field.
19
+ sig { returns(T.nilable(OpenAI::Live::ForkSessionConfig::Audio)) }
20
+ attr_reader :audio
21
+
22
+ sig { params(audio: OpenAI::Live::ForkSessionConfig::Audio::OrHash).void }
23
+ attr_writer :audio
24
+
25
+ # Frontend data-channel permissions for a WebRTC fork. Omitted permissions inherit
26
+ # the stored values. Not supported for WebSocket forks.
27
+ sig { returns(T.nilable(OpenAI::Live::ClientConfig)) }
28
+ attr_reader :client
29
+
30
+ sig { params(client: OpenAI::Live::ClientConfig::OrHash).void }
31
+ attr_writer :client
32
+
33
+ # Overrides for the stored session’s Responses backend. Only supported when the
34
+ # stored session already uses Responses delegation; the delegation type cannot
35
+ # change.
36
+ sig { returns(T.nilable(OpenAI::Live::ForkSessionConfig::Delegation)) }
37
+ attr_reader :delegation
38
+
39
+ sig { params(delegation: OpenAI::Live::ForkSessionConfig::Delegation::OrHash).void }
40
+ attr_writer :delegation
41
+
42
+ # Whether to store the forked session. Omission inherits the stored session's
43
+ # setting.
44
+ sig { returns(T.nilable(T::Boolean)) }
45
+ attr_reader :store
46
+
47
+ sig { params(store: T::Boolean).void }
48
+ attr_writer :store
49
+
50
+ # Overrides for a stored session after connecting to the fork WebSocket. An empty
51
+ # object inherits the stored configuration; do not supply a new model.
52
+ # audio.format applies only to the new WebSocket connection. client overrides are
53
+ # only supported for WebRTC forks.
54
+ sig do
55
+ params(
56
+
57
+ audio: OpenAI::Live::ForkSessionConfig::Audio::OrHash,
58
+
59
+ client: OpenAI::Live::ClientConfig::OrHash,
60
+
61
+ delegation: OpenAI::Live::ForkSessionConfig::Delegation::OrHash,
62
+
63
+ store: T::Boolean
64
+ )
65
+ .returns(T.attached_class)
66
+ end
67
+ def self.new(
68
+
69
+ # Audio format for a WebSocket fork. WebRTC forks negotiate their audio format and
70
+ # must omit this field.
71
+ audio: nil,
72
+
73
+ # Frontend data-channel permissions for a WebRTC fork. Omitted permissions inherit
74
+ # the stored values. Not supported for WebSocket forks.
75
+ client: nil,
76
+
77
+ # Overrides for the stored session’s Responses backend. Only supported when the
78
+ # stored session already uses Responses delegation; the delegation type cannot
79
+ # change.
80
+ delegation: nil,
81
+
82
+ # Whether to store the forked session. Omission inherits the stored session's
83
+ # setting.
84
+
85
+ store: nil
86
+ )
87
+ end
88
+
89
+ sig do
90
+ override.returns(
91
+ {
92
+ audio: OpenAI::Live::ForkSessionConfig::Audio,
93
+ client: OpenAI::Live::ClientConfig,
94
+ delegation: OpenAI::Live::ForkSessionConfig::Delegation,
95
+ store: T::Boolean
96
+ }
97
+ )
98
+ end
99
+ def to_hash
100
+ end
101
+
102
+ class Audio < OpenAI::Internal::Type::BaseModel
103
+ OrHash = T.type_alias do
104
+ T.any(
105
+ OpenAI::Live::ForkSessionConfig::Audio,
106
+ OpenAI::Internal::AnyHash
107
+ )
108
+ end
109
+
110
+ # Audio encoding and sample rate for audio sent and received over a Live WebSocket
111
+ # connection. WebRTC and SIP negotiate their media format separately.
112
+ sig {
113
+ returns(
114
+ T.nilable(
115
+ T.any(
116
+ OpenAI::Live::AudioFormat::AudioPCM,
117
+ OpenAI::Live::AudioFormat::AudioPCMU,
118
+ OpenAI::Live::AudioFormat::AudioPCMA
119
+ )
120
+ )
121
+ )
122
+ }
123
+ attr_reader :format_
124
+
125
+ sig {
126
+ params(
127
+ format_: T.any(
128
+ OpenAI::Live::AudioFormat::AudioPCM::OrHash,
129
+ OpenAI::Live::AudioFormat::AudioPCMU::OrHash,
130
+ OpenAI::Live::AudioFormat::AudioPCMA::OrHash
131
+ )
132
+ )
133
+ .void
134
+ }
135
+ attr_writer :format_
136
+
137
+ # Audio format for a WebSocket fork. WebRTC forks negotiate their audio format and
138
+ # must omit this field.
139
+ sig do
140
+ params(
141
+
142
+ format_: T.any(
143
+ OpenAI::Live::AudioFormat::AudioPCM::OrHash,
144
+ OpenAI::Live::AudioFormat::AudioPCMU::OrHash,
145
+ OpenAI::Live::AudioFormat::AudioPCMA::OrHash
146
+ )
147
+ )
148
+ .returns(T.attached_class)
149
+ end
150
+ def self.new(
151
+
152
+ # Audio encoding and sample rate for audio sent and received over a Live WebSocket
153
+ # connection. WebRTC and SIP negotiate their media format separately.
154
+
155
+ format_: nil
156
+ )
157
+ end
158
+
159
+ sig do
160
+ override.returns(
161
+ {
162
+ format_: T.any(
163
+ OpenAI::Live::AudioFormat::AudioPCM,
164
+ OpenAI::Live::AudioFormat::AudioPCMU,
165
+ OpenAI::Live::AudioFormat::AudioPCMA
166
+ )
167
+ }
168
+ )
169
+ end
170
+ def to_hash
171
+ end
172
+
173
+ end
174
+
175
+ class Delegation < OpenAI::Internal::Type::BaseModel
176
+ OrHash = T.type_alias do
177
+ T.any(
178
+ OpenAI::Live::ForkSessionConfig::Delegation,
179
+ OpenAI::Internal::AnyHash
180
+ )
181
+ end
182
+
183
+ # The delegation owner. Always `responses` for tasks handled by the Responses API.
184
+ sig { returns(Symbol) }
185
+ attr_accessor :type
186
+
187
+ # Responses backend settings to update. Omitted settings keep their existing
188
+ # values.
189
+ sig { returns(T.nilable(OpenAI::Live::ResponsesDelegationUpdateConfig)) }
190
+ attr_reader :responses
191
+
192
+ sig { params(responses: OpenAI::Live::ResponsesDelegationUpdateConfig::OrHash).void }
193
+ attr_writer :responses
194
+
195
+ # Overrides for the stored session’s Responses backend. Only supported when the
196
+ # stored session already uses Responses delegation; the delegation type cannot
197
+ # change.
198
+ sig do
199
+ params(
200
+
201
+ responses: OpenAI::Live::ResponsesDelegationUpdateConfig::OrHash,
202
+
203
+ type: Symbol
204
+ )
205
+ .returns(T.attached_class)
206
+ end
207
+ def self.new(
208
+
209
+ # Responses backend settings to update. Omitted settings keep their existing
210
+ # values.
211
+ responses: nil,
212
+
213
+ # The delegation owner. Always `responses` for tasks handled by the Responses API.
214
+
215
+ type: :responses
216
+ )
217
+ end
218
+
219
+ sig do
220
+ override.returns(
221
+ {type: Symbol, responses: OpenAI::Live::ResponsesDelegationUpdateConfig}
222
+ )
223
+ end
224
+ def to_hash
225
+ end
226
+
227
+ end
228
+
229
+ end
230
+
231
+ end
232
+
233
+ end
234
+ end