openai 0.113.0 → 0.115.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 (284) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +54 -0
  3. data/README.md +17 -2
  4. data/docs/architecture/security-model.md +11 -16
  5. data/examples/responses/websocket_workflows.rb +78 -3
  6. data/lib/openai/auth/subject_token_providers/azure_managed_identity_token_provider.rb +10 -8
  7. data/lib/openai/auth/subject_token_providers/gcp_id_token_provider.rb +8 -7
  8. data/lib/openai/helpers/chat/tool_runner.rb +1 -1
  9. data/lib/openai/helpers/live/websocket.rb +31 -0
  10. data/lib/openai/helpers/realtime/connection.rb +33 -0
  11. data/lib/openai/helpers/realtime/connection_manager.rb +1 -0
  12. data/lib/openai/helpers/realtime/conversation_item_variant_resolver.rb +5 -0
  13. data/lib/openai/helpers/realtime/recovery.rb +5 -1
  14. data/lib/openai/helpers/realtime/translation.rb +5 -0
  15. data/lib/openai/helpers/realtime/transports/async_websocket.rb +19 -0
  16. data/lib/openai/helpers/responses_websocket/connection.rb +53 -15
  17. data/lib/openai/helpers/responses_websocket/connection_manager.rb +1 -0
  18. data/lib/openai/helpers/responses_websocket/connection_resources.rb +1 -1
  19. data/lib/openai/helpers/structured_output/response_parser.rb +1 -0
  20. data/lib/openai/helpers/structured_output.rb +58 -0
  21. data/lib/openai/helpers/websocket/connection_manager.rb +11 -0
  22. data/lib/openai/helpers/websocket/resource.rb +1 -0
  23. data/lib/openai/helpers/websocket/typed_connection.rb +1 -0
  24. data/lib/openai/internal/type/array_of.rb +1 -1
  25. data/lib/openai/internal/type/hash_of.rb +1 -1
  26. data/lib/openai/internal/type/request_parameters.rb +2 -1
  27. data/lib/openai/internal/type/union.rb +18 -6
  28. data/lib/openai/models/admin/organization/external_key.rb +169 -0
  29. data/lib/openai/models/admin/organization/external_key_create_params.rb +311 -0
  30. data/lib/openai/models/admin/organization/external_key_delete_params.rb +24 -0
  31. data/lib/openai/models/admin/organization/external_key_list_params.rb +69 -0
  32. data/lib/openai/models/admin/organization/external_key_retrieve_params.rb +24 -0
  33. data/lib/openai/models/admin/organization/external_key_validate_params.rb +24 -0
  34. data/lib/openai/models/admin/organization/external_key_validate_response.rb +20 -0
  35. data/lib/openai/models/audio/speech_model.rb +12 -0
  36. data/lib/openai/models/audio_model.rb +15 -0
  37. data/lib/openai/models/beta/agent.rb +49 -1
  38. data/lib/openai/models/beta/agent_create_params.rb +51 -1
  39. data/lib/openai/models/beta/agent_session.rb +75 -2
  40. data/lib/openai/models/beta/agent_update_params.rb +62 -1
  41. data/lib/openai/models/beta/agents/session_create_params.rb +94 -2
  42. data/lib/openai/models/beta/agents/session_list_params.rb +16 -1
  43. data/lib/openai/models/beta/agents/session_update_params.rb +50 -5
  44. data/lib/openai/models/beta/assistant_update_params.rb +18 -0
  45. data/lib/openai/models/beta/beta_response.rb +224 -1
  46. data/lib/openai/models/beta/beta_response_configuration_update_item.rb +64 -3
  47. data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +64 -4
  48. data/lib/openai/models/beta/beta_response_input_file.rb +9 -9
  49. data/lib/openai/models/beta/beta_response_input_file_content.rb +9 -9
  50. data/lib/openai/models/beta/beta_response_input_image.rb +9 -9
  51. data/lib/openai/models/beta/beta_response_input_image_content.rb +9 -9
  52. data/lib/openai/models/beta/beta_response_input_item.rb +2 -3
  53. data/lib/openai/models/beta/beta_response_input_text.rb +9 -9
  54. data/lib/openai/models/beta/beta_response_input_text_content.rb +9 -9
  55. data/lib/openai/models/beta/beta_response_item.rb +11 -11
  56. data/lib/openai/models/beta/beta_response_output_item.rb +9 -9
  57. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +6 -6
  58. data/lib/openai/models/beta/beta_responses_client_event.rb +20 -1
  59. data/lib/openai/models/beta/beta_tool.rb +6 -6
  60. data/lib/openai/models/beta/response_compact_params.rb +6 -0
  61. data/lib/openai/models/beta/response_create_params.rb +6 -0
  62. data/lib/openai/models/chat/chat_completion_content_part.rb +9 -9
  63. data/lib/openai/models/chat/chat_completion_content_part_image.rb +9 -9
  64. data/lib/openai/models/chat/chat_completion_content_part_input_audio.rb +9 -9
  65. data/lib/openai/models/chat/chat_completion_content_part_text.rb +9 -9
  66. data/lib/openai/models/chat_model.rb +6 -0
  67. data/lib/openai/models/conversations/computer_screenshot_content.rb +9 -9
  68. data/lib/openai/models/conversations/conversation_item.rb +2 -2
  69. data/lib/openai/models/image_edit_params.rb +46 -25
  70. data/lib/openai/models/live/fork_server_event.rb +43 -3
  71. data/lib/openai/models/live/server_event.rb +43 -3
  72. data/lib/openai/models/live/sideband_client_event.rb +40 -1
  73. data/lib/openai/models/live/sideband_server_event.rb +43 -3
  74. data/lib/openai/models/realtime/audio_transcription.rb +15 -0
  75. data/lib/openai/models/realtime/conversation_item_added.rb +2 -2
  76. data/lib/openai/models/realtime/conversation_item_create_event.rb +2 -2
  77. data/lib/openai/models/realtime/conversation_item_created_event.rb +2 -2
  78. data/lib/openai/models/realtime/conversation_item_done.rb +2 -2
  79. data/lib/openai/models/realtime/realtime_response.rb +2 -2
  80. data/lib/openai/models/realtime/realtime_response_create_params.rb +2 -2
  81. data/lib/openai/models/realtime/realtime_server_event.rb +2 -2
  82. data/lib/openai/models/realtime/realtime_session.rb +18 -0
  83. data/lib/openai/models/realtime/realtime_session_create_request.rb +18 -0
  84. data/lib/openai/models/realtime/realtime_session_create_response.rb +18 -0
  85. data/lib/openai/models/realtime/response_output_item_added_event.rb +2 -2
  86. data/lib/openai/models/realtime/response_output_item_done_event.rb +2 -2
  87. data/lib/openai/models/responses/response.rb +221 -1
  88. data/lib/openai/models/responses/response_compact_params.rb +6 -0
  89. data/lib/openai/models/responses/response_configuration_update_item.rb +50 -3
  90. data/lib/openai/models/responses/response_configuration_update_item_param.rb +50 -4
  91. data/lib/openai/models/responses/response_input_file.rb +9 -9
  92. data/lib/openai/models/responses/response_input_file_content.rb +9 -9
  93. data/lib/openai/models/responses/response_input_image.rb +9 -9
  94. data/lib/openai/models/responses/response_input_image_content.rb +9 -9
  95. data/lib/openai/models/responses/response_input_item.rb +2 -3
  96. data/lib/openai/models/responses/response_input_text.rb +9 -9
  97. data/lib/openai/models/responses/response_input_text_content.rb +9 -9
  98. data/lib/openai/models/responses/response_item.rb +2 -2
  99. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +6 -6
  100. data/lib/openai/models/responses/responses_client_event.rb +14 -1
  101. data/lib/openai/models/responses/tool.rb +6 -6
  102. data/lib/openai/net_http_client.rb +6 -0
  103. data/lib/openai/providers/vertex.rb +0 -10
  104. data/lib/openai/resources/admin/organization/external_keys.rb +132 -0
  105. data/lib/openai/resources/admin/organization.rb +4 -0
  106. data/lib/openai/resources/audio/speech.rb +8 -0
  107. data/lib/openai/resources/audio/translations.rb +8 -0
  108. data/lib/openai/resources/beta/agents/sessions.rb +22 -6
  109. data/lib/openai/resources/beta/agents.rb +17 -2
  110. data/lib/openai/resources/images.rb +36 -18
  111. data/lib/openai/version.rb +1 -1
  112. data/lib/openai.rb +8 -0
  113. data/rbi/openai/helpers/live/websocket.rbi +1 -12
  114. data/rbi/openai/helpers/realtime/connection.rbi +5 -0
  115. data/rbi/openai/helpers/realtime/transports/async_websocket.rbi +5 -0
  116. data/rbi/openai/helpers/responses_websocket/connection.rbi +7 -2
  117. data/rbi/openai/helpers/structured_output.rbi +10 -0
  118. data/rbi/openai/internal/type/array_of.rbi +1 -1
  119. data/rbi/openai/internal/type/hash_of.rbi +1 -1
  120. data/rbi/openai/internal/type/union.rbi +5 -0
  121. data/rbi/openai/models/admin/organization/external_key.rbi +301 -0
  122. data/rbi/openai/models/admin/organization/external_key_create_params.rbi +532 -0
  123. data/rbi/openai/models/admin/organization/external_key_delete_params.rbi +57 -0
  124. data/rbi/openai/models/admin/organization/external_key_list_params.rbi +129 -0
  125. data/rbi/openai/models/admin/organization/external_key_retrieve_params.rbi +57 -0
  126. data/rbi/openai/models/admin/organization/external_key_validate_params.rbi +57 -0
  127. data/rbi/openai/models/admin/organization/external_key_validate_response.rbi +50 -0
  128. data/rbi/openai/models/beta/agent.rbi +103 -1
  129. data/rbi/openai/models/beta/agent_create_params.rbi +109 -0
  130. data/rbi/openai/models/beta/agent_session.rbi +136 -3
  131. data/rbi/openai/models/beta/agent_update_params.rbi +120 -0
  132. data/rbi/openai/models/beta/agents/session_create_params.rbi +153 -0
  133. data/rbi/openai/models/beta/agents/session_list_params.rbi +19 -0
  134. data/rbi/openai/models/beta/agents/session_update_params.rbi +94 -6
  135. data/rbi/openai/models/beta/beta_response.rbi +394 -0
  136. data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +113 -3
  137. data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +125 -4
  138. data/rbi/openai/models/beta/beta_response_input_file.rbi +9 -9
  139. data/rbi/openai/models/beta/beta_response_input_file_content.rbi +9 -9
  140. data/rbi/openai/models/beta/beta_response_input_image.rbi +9 -9
  141. data/rbi/openai/models/beta/beta_response_input_image_content.rbi +9 -9
  142. data/rbi/openai/models/beta/beta_response_input_text.rbi +9 -9
  143. data/rbi/openai/models/beta/beta_response_input_text_content.rbi +9 -9
  144. data/rbi/openai/models/beta/beta_response_item.rbi +9 -9
  145. data/rbi/openai/models/beta/beta_response_output_item.rbi +9 -9
  146. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +6 -6
  147. data/rbi/openai/models/beta/beta_responses_client_event.rbi +17 -0
  148. data/rbi/openai/models/beta/beta_tool.rbi +6 -6
  149. data/rbi/openai/models/chat/chat_completion_content_part.rbi +9 -9
  150. data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +9 -9
  151. data/rbi/openai/models/chat/chat_completion_content_part_input_audio.rbi +9 -9
  152. data/rbi/openai/models/chat/chat_completion_content_part_text.rbi +9 -9
  153. data/rbi/openai/models/conversations/computer_screenshot_content.rbi +9 -9
  154. data/rbi/openai/models/decision_create_params.rbi +4 -1
  155. data/rbi/openai/models/image_edit_params.rbi +49 -24
  156. data/rbi/openai/models/live/fork_server_event.rbi +65 -1
  157. data/rbi/openai/models/live/server_event.rbi +65 -1
  158. data/rbi/openai/models/live/sideband_client_event.rbi +60 -0
  159. data/rbi/openai/models/live/sideband_server_event.rbi +65 -1
  160. data/rbi/openai/models/realtime/conversation_item_added.rbi +6 -3
  161. data/rbi/openai/models/realtime/conversation_item_create_event.rbi +6 -3
  162. data/rbi/openai/models/realtime/conversation_item_created_event.rbi +6 -3
  163. data/rbi/openai/models/realtime/conversation_item_done.rbi +6 -3
  164. data/rbi/openai/models/realtime/realtime_response.rbi +8 -4
  165. data/rbi/openai/models/realtime/realtime_response_create_params.rbi +8 -4
  166. data/rbi/openai/models/realtime/realtime_server_event.rbi +6 -3
  167. data/rbi/openai/models/realtime/response_output_item_added_event.rbi +6 -3
  168. data/rbi/openai/models/realtime/response_output_item_done_event.rbi +6 -3
  169. data/rbi/openai/models/responses/response.rbi +394 -0
  170. data/rbi/openai/models/responses/response_configuration_update_item.rbi +76 -3
  171. data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +74 -4
  172. data/rbi/openai/models/responses/response_input_file.rbi +9 -9
  173. data/rbi/openai/models/responses/response_input_file_content.rbi +9 -9
  174. data/rbi/openai/models/responses/response_input_image.rbi +9 -9
  175. data/rbi/openai/models/responses/response_input_image_content.rbi +9 -9
  176. data/rbi/openai/models/responses/response_input_text.rbi +9 -9
  177. data/rbi/openai/models/responses/response_input_text_content.rbi +9 -9
  178. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +6 -6
  179. data/rbi/openai/models/responses/responses_client_event.rbi +17 -0
  180. data/rbi/openai/models/responses/tool.rbi +6 -6
  181. data/rbi/openai/net_http_client.rbi +5 -0
  182. data/rbi/openai/resources/admin/organization/external_keys.rbi +86 -0
  183. data/rbi/openai/resources/admin/organization.rbi +3 -0
  184. data/rbi/openai/resources/audio/speech.rbi +8 -0
  185. data/rbi/openai/resources/audio/translations.rbi +6 -0
  186. data/rbi/openai/resources/beta/agents/sessions.rbi +18 -2
  187. data/rbi/openai/resources/beta/agents.rbi +15 -0
  188. data/rbi/openai/resources/images.rbi +34 -16
  189. data/rbi/openai/resources/responses.rbi +2 -0
  190. data/realtime.md +6 -0
  191. data/responses-websocket.md +53 -0
  192. data/sig/openai/helpers/live/websocket.rbs +1 -9
  193. data/sig/openai/helpers/realtime/connection.rbs +3 -0
  194. data/sig/openai/helpers/realtime/transports/async_websocket.rbs +3 -0
  195. data/sig/openai/helpers/responses_websocket/connection.rbs +7 -1
  196. data/sig/openai/helpers/structured_output.rbs +9 -0
  197. data/sig/openai/internal/type/union.rbs +4 -0
  198. data/sig/openai/models/admin/organization/external_key.rbs +186 -0
  199. data/sig/openai/models/admin/organization/external_key_create_params.rbs +423 -0
  200. data/sig/openai/models/admin/organization/external_key_delete_params.rbs +27 -0
  201. data/sig/openai/models/admin/organization/external_key_list_params.rbs +81 -0
  202. data/sig/openai/models/admin/organization/external_key_retrieve_params.rbs +27 -0
  203. data/sig/openai/models/admin/organization/external_key_validate_params.rbs +27 -0
  204. data/sig/openai/models/admin/organization/external_key_validate_response.rbs +17 -0
  205. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +72 -2
  206. data/sig/openai/models/audio/speech_create_params.rbs +15 -2
  207. data/sig/openai/models/audio/transcription_create_params.rbs +30 -2
  208. data/sig/openai/models/audio/voice_create_params.rbs +47 -2
  209. data/sig/openai/models/beta/agent.rbs +54 -2
  210. data/sig/openai/models/beta/agent_create_params.rbs +54 -0
  211. data/sig/openai/models/beta/agent_session.rbs +82 -3
  212. data/sig/openai/models/beta/agent_update_params.rbs +64 -0
  213. data/sig/openai/models/beta/agents/session_create_params.rbs +91 -0
  214. data/sig/openai/models/beta/agents/session_list_params.rbs +20 -0
  215. data/sig/openai/models/beta/agents/session_update_params.rbs +48 -6
  216. data/sig/openai/models/beta/assistant_create_params.rbs +5 -2
  217. data/sig/openai/models/beta/beta_response.rbs +223 -0
  218. data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +58 -2
  219. data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +58 -2
  220. data/sig/openai/models/beta/beta_response_input_file.rbs +9 -9
  221. data/sig/openai/models/beta/beta_response_input_file_content.rbs +6 -6
  222. data/sig/openai/models/beta/beta_response_input_image.rbs +9 -9
  223. data/sig/openai/models/beta/beta_response_input_image_content.rbs +6 -6
  224. data/sig/openai/models/beta/beta_response_input_text.rbs +9 -9
  225. data/sig/openai/models/beta/beta_response_input_text_content.rbs +6 -6
  226. data/sig/openai/models/beta/beta_response_item.rbs +9 -9
  227. data/sig/openai/models/beta/beta_response_output_item.rbs +9 -9
  228. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +4 -4
  229. data/sig/openai/models/beta/beta_responses_client_event.rbs +17 -0
  230. data/sig/openai/models/beta/beta_tool.rbs +4 -4
  231. data/sig/openai/models/beta/response_create_params.rbs +5 -2
  232. data/sig/openai/models/beta/responses/input_token_count_params.rbs +10 -2
  233. data/sig/openai/models/beta/thread_create_and_run_params.rbs +11 -5
  234. data/sig/openai/models/beta/thread_create_params.rbs +11 -5
  235. data/sig/openai/models/beta/threads/message_create_params.rbs +6 -3
  236. data/sig/openai/models/beta/threads/run_create_params.rbs +6 -3
  237. data/sig/openai/models/chat/chat_completion_content_part.rbs +9 -9
  238. data/sig/openai/models/chat/chat_completion_content_part_image.rbs +9 -9
  239. data/sig/openai/models/chat/chat_completion_content_part_input_audio.rbs +9 -9
  240. data/sig/openai/models/chat/chat_completion_content_part_text.rbs +9 -9
  241. data/sig/openai/models/conversations/computer_screenshot_content.rbs +9 -9
  242. data/sig/openai/models/decision_create_params.rbs +27 -2
  243. data/sig/openai/models/eval_create_params.rbs +25 -4
  244. data/sig/openai/models/evals/run_create_params.rbs +52 -8
  245. data/sig/openai/models/image_edit_params.rbs +47 -16
  246. data/sig/openai/models/live/fork_server_event.rbs +39 -0
  247. data/sig/openai/models/live/server_event.rbs +39 -0
  248. data/sig/openai/models/live/session_accept_params.rbs +39 -2
  249. data/sig/openai/models/live/sideband_client_event.rbs +32 -0
  250. data/sig/openai/models/live/sideband_server_event.rbs +39 -0
  251. data/sig/openai/models/realtime/conversation_item.rbs +1 -0
  252. data/sig/openai/models/responses/input_token_count_params.rbs +10 -2
  253. data/sig/openai/models/responses/response.rbs +223 -0
  254. data/sig/openai/models/responses/response_configuration_update_item.rbs +45 -2
  255. data/sig/openai/models/responses/response_configuration_update_item_param.rbs +45 -2
  256. data/sig/openai/models/responses/response_create_params.rbs +5 -2
  257. data/sig/openai/models/responses/response_input_file.rbs +9 -9
  258. data/sig/openai/models/responses/response_input_file_content.rbs +6 -6
  259. data/sig/openai/models/responses/response_input_image.rbs +9 -9
  260. data/sig/openai/models/responses/response_input_image_content.rbs +6 -6
  261. data/sig/openai/models/responses/response_input_text.rbs +9 -9
  262. data/sig/openai/models/responses/response_input_text_content.rbs +6 -6
  263. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +4 -4
  264. data/sig/openai/models/responses/responses_client_event.rbs +17 -0
  265. data/sig/openai/models/responses/tool.rbs +4 -4
  266. data/sig/openai/models/video_edit_params.rbs +11 -2
  267. data/sig/openai/models/video_extend_params.rbs +11 -2
  268. data/sig/openai/net_http_client.rbs +3 -0
  269. data/sig/openai/resources/admin/organization/external_keys.rbs +70 -0
  270. data/sig/openai/resources/admin/organization/external_storage.rbs +23 -1
  271. data/sig/openai/resources/admin/organization.rbs +2 -0
  272. data/sig/openai/resources/audio/speech.rbs +2 -1
  273. data/sig/openai/resources/audio/transcriptions.rbs +14 -2
  274. data/sig/openai/resources/audio/voices.rbs +14 -1
  275. data/sig/openai/resources/beta/agents/sessions.rbs +4 -0
  276. data/sig/openai/resources/beta/agents.rbs +4 -0
  277. data/sig/openai/resources/beta/responses/input_tokens.rbs +2 -1
  278. data/sig/openai/resources/beta/responses.rbs +4 -2
  279. data/sig/openai/resources/decisions.rbs +7 -1
  280. data/sig/openai/resources/images.rbs +2 -0
  281. data/sig/openai/resources/responses/input_tokens.rbs +2 -1
  282. data/sig/openai/resources/responses.rbs +5 -2
  283. data/sig/openai/resources/videos.rbs +2 -2
  284. metadata +25 -1
@@ -26,7 +26,8 @@ module OpenAI
26
26
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
27
27
  OpenAI::Realtime::RealtimeMcpListTools,
28
28
  OpenAI::Realtime::RealtimeMcpToolCall,
29
- OpenAI::Realtime::RealtimeMcpApprovalRequest
29
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
30
+ OpenAI::Realtime::ConversationItemWithReference
30
31
  )
31
32
  )
32
33
  }
@@ -78,7 +79,8 @@ module OpenAI
78
79
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
79
80
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
80
81
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
81
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
82
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
83
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
82
84
  ),
83
85
 
84
86
  event_id: String,
@@ -126,7 +128,8 @@ module OpenAI
126
128
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
127
129
  OpenAI::Realtime::RealtimeMcpListTools,
128
130
  OpenAI::Realtime::RealtimeMcpToolCall,
129
- OpenAI::Realtime::RealtimeMcpApprovalRequest
131
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
132
+ OpenAI::Realtime::ConversationItemWithReference
130
133
  ),
131
134
  type: Symbol,
132
135
  event_id: T.nilable(String),
@@ -30,7 +30,8 @@ module OpenAI
30
30
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
31
31
  OpenAI::Realtime::RealtimeMcpListTools,
32
32
  OpenAI::Realtime::RealtimeMcpToolCall,
33
- OpenAI::Realtime::RealtimeMcpApprovalRequest
33
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
34
+ OpenAI::Realtime::ConversationItemWithReference
34
35
  )
35
36
  )
36
37
  }
@@ -71,7 +72,8 @@ module OpenAI
71
72
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
72
73
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
73
74
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
74
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
75
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
76
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
75
77
  ),
76
78
 
77
79
  previous_item_id: T.nilable(String),
@@ -112,7 +114,8 @@ module OpenAI
112
114
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
113
115
  OpenAI::Realtime::RealtimeMcpListTools,
114
116
  OpenAI::Realtime::RealtimeMcpToolCall,
115
- OpenAI::Realtime::RealtimeMcpApprovalRequest
117
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
118
+ OpenAI::Realtime::ConversationItemWithReference
116
119
  ),
117
120
  type: Symbol,
118
121
  previous_item_id: T.nilable(String)
@@ -30,7 +30,8 @@ module OpenAI
30
30
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
31
31
  OpenAI::Realtime::RealtimeMcpListTools,
32
32
  OpenAI::Realtime::RealtimeMcpToolCall,
33
- OpenAI::Realtime::RealtimeMcpApprovalRequest
33
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
34
+ OpenAI::Realtime::ConversationItemWithReference
34
35
  )
35
36
  )
36
37
  }
@@ -63,7 +64,8 @@ module OpenAI
63
64
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
64
65
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
65
66
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
66
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
67
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
68
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
67
69
  ),
68
70
 
69
71
  previous_item_id: T.nilable(String),
@@ -103,7 +105,8 @@ module OpenAI
103
105
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
104
106
  OpenAI::Realtime::RealtimeMcpListTools,
105
107
  OpenAI::Realtime::RealtimeMcpToolCall,
106
- OpenAI::Realtime::RealtimeMcpApprovalRequest
108
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
109
+ OpenAI::Realtime::ConversationItemWithReference
107
110
  ),
108
111
  type: Symbol,
109
112
  previous_item_id: T.nilable(String)
@@ -78,7 +78,8 @@ module OpenAI
78
78
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
79
79
  OpenAI::Realtime::RealtimeMcpListTools,
80
80
  OpenAI::Realtime::RealtimeMcpToolCall,
81
- OpenAI::Realtime::RealtimeMcpApprovalRequest
81
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
82
+ OpenAI::Realtime::ConversationItemWithReference
82
83
  )
83
84
  ]
84
85
  )
@@ -98,7 +99,8 @@ module OpenAI
98
99
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
99
100
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
100
101
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
101
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
102
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
103
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
102
104
  )
103
105
  ]
104
106
  )
@@ -167,7 +169,8 @@ module OpenAI
167
169
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
168
170
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
169
171
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
170
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
172
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
173
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
171
174
  )
172
175
  ],
173
176
 
@@ -256,7 +259,8 @@ module OpenAI
256
259
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
257
260
  OpenAI::Realtime::RealtimeMcpListTools,
258
261
  OpenAI::Realtime::RealtimeMcpToolCall,
259
- OpenAI::Realtime::RealtimeMcpApprovalRequest
262
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
263
+ OpenAI::Realtime::ConversationItemWithReference
260
264
  )
261
265
  ],
262
266
  output_modalities: T::Array[OpenAI::Realtime::RealtimeResponse::OutputModality::OrSymbol],
@@ -55,7 +55,8 @@ module OpenAI
55
55
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
56
56
  OpenAI::Realtime::RealtimeMcpListTools,
57
57
  OpenAI::Realtime::RealtimeMcpToolCall,
58
- OpenAI::Realtime::RealtimeMcpApprovalRequest
58
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
59
+ OpenAI::Realtime::ConversationItemWithReference
59
60
  )
60
61
  ]
61
62
  )
@@ -75,7 +76,8 @@ module OpenAI
75
76
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
76
77
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
77
78
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
78
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
79
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
80
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
79
81
  )
80
82
  ]
81
83
  )
@@ -220,7 +222,8 @@ module OpenAI
220
222
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
221
223
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
222
224
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
223
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
225
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
226
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
224
227
  )
225
228
  ],
226
229
 
@@ -338,7 +341,8 @@ module OpenAI
338
341
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
339
342
  OpenAI::Realtime::RealtimeMcpListTools,
340
343
  OpenAI::Realtime::RealtimeMcpToolCall,
341
- OpenAI::Realtime::RealtimeMcpApprovalRequest
344
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
345
+ OpenAI::Realtime::ConversationItemWithReference
342
346
  )
343
347
  ],
344
348
  instructions: String,
@@ -84,7 +84,8 @@ module OpenAI
84
84
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
85
85
  OpenAI::Realtime::RealtimeMcpListTools,
86
86
  OpenAI::Realtime::RealtimeMcpToolCall,
87
- OpenAI::Realtime::RealtimeMcpApprovalRequest
87
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
88
+ OpenAI::Realtime::ConversationItemWithReference
88
89
  )
89
90
  )
90
91
  }
@@ -113,7 +114,8 @@ module OpenAI
113
114
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
114
115
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
115
116
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
116
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
117
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
118
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
117
119
  ),
118
120
 
119
121
  type: Symbol
@@ -147,7 +149,8 @@ module OpenAI
147
149
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
148
150
  OpenAI::Realtime::RealtimeMcpListTools,
149
151
  OpenAI::Realtime::RealtimeMcpToolCall,
150
- OpenAI::Realtime::RealtimeMcpApprovalRequest
152
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
153
+ OpenAI::Realtime::ConversationItemWithReference
151
154
  ),
152
155
  type: Symbol
153
156
  }
@@ -30,7 +30,8 @@ module OpenAI
30
30
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
31
31
  OpenAI::Realtime::RealtimeMcpListTools,
32
32
  OpenAI::Realtime::RealtimeMcpToolCall,
33
- OpenAI::Realtime::RealtimeMcpApprovalRequest
33
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
34
+ OpenAI::Realtime::ConversationItemWithReference
34
35
  )
35
36
  )
36
37
  }
@@ -63,7 +64,8 @@ module OpenAI
63
64
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
64
65
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
65
66
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
66
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
67
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
68
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
67
69
  ),
68
70
 
69
71
  output_index: Integer,
@@ -107,7 +109,8 @@ module OpenAI
107
109
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
108
110
  OpenAI::Realtime::RealtimeMcpListTools,
109
111
  OpenAI::Realtime::RealtimeMcpToolCall,
110
- OpenAI::Realtime::RealtimeMcpApprovalRequest
112
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
113
+ OpenAI::Realtime::ConversationItemWithReference
111
114
  ),
112
115
  output_index: Integer,
113
116
  response_id: String,
@@ -30,7 +30,8 @@ module OpenAI
30
30
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
31
31
  OpenAI::Realtime::RealtimeMcpListTools,
32
32
  OpenAI::Realtime::RealtimeMcpToolCall,
33
- OpenAI::Realtime::RealtimeMcpApprovalRequest
33
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
34
+ OpenAI::Realtime::ConversationItemWithReference
34
35
  )
35
36
  )
36
37
  }
@@ -64,7 +65,8 @@ module OpenAI
64
65
  OpenAI::Realtime::RealtimeMcpApprovalResponse::OrHash,
65
66
  OpenAI::Realtime::RealtimeMcpListTools::OrHash,
66
67
  OpenAI::Realtime::RealtimeMcpToolCall::OrHash,
67
- OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash
68
+ OpenAI::Realtime::RealtimeMcpApprovalRequest::OrHash,
69
+ OpenAI::Realtime::ConversationItemWithReference::OrHash
68
70
  ),
69
71
 
70
72
  output_index: Integer,
@@ -108,7 +110,8 @@ module OpenAI
108
110
  OpenAI::Realtime::RealtimeMcpApprovalResponse,
109
111
  OpenAI::Realtime::RealtimeMcpListTools,
110
112
  OpenAI::Realtime::RealtimeMcpToolCall,
111
- OpenAI::Realtime::RealtimeMcpApprovalRequest
113
+ OpenAI::Realtime::RealtimeMcpApprovalRequest,
114
+ OpenAI::Realtime::ConversationItemWithReference
112
115
  ),
113
116
  output_index: Integer,
114
117
  response_id: String,
@@ -299,6 +299,24 @@ module OpenAI
299
299
  sig { params(text: OpenAI::Responses::ResponseTextConfig::OrHash).void }
300
300
  attr_writer :text
301
301
 
302
+ # Usage reported by hosted tools, separate from base model `usage`. The field can
303
+ # be omitted when tool usage is unavailable. When present, tool families with no
304
+ # recorded usage have zero counts.
305
+ #
306
+ # `image_gen` sums available token counts across image generation calls. Calls
307
+ # with missing or incomplete usage records may be skipped. Output token details
308
+ # and cached input counts can be omitted. An omitted cache count means cache usage
309
+ # is unknown.
310
+ #
311
+ # `web_search.num_requests` counts billable searches. Discounted searches and
312
+ # actions such as opening a page are excluded. Use billing records to reconcile
313
+ # final charges.
314
+ sig { returns(T.nilable(OpenAI::Responses::Response::ToolUsage)) }
315
+ attr_reader :tool_usage
316
+
317
+ sig { params(tool_usage: OpenAI::Responses::Response::ToolUsage::OrHash).void }
318
+ attr_writer :tool_usage
319
+
302
320
  # An integer between 0 and 20 specifying the maximum number of most likely tokens
303
321
  # to return at each token position, each with an associated log probability. In
304
322
  # some cases, the number of returned tokens may be fewer than requested.
@@ -464,6 +482,8 @@ module OpenAI
464
482
 
465
483
  text: OpenAI::Responses::ResponseTextConfig::OrHash,
466
484
 
485
+ tool_usage: OpenAI::Responses::Response::ToolUsage::OrHash,
486
+
467
487
  top_logprobs: T.nilable(Integer),
468
488
 
469
489
  truncation: T.nilable(OpenAI::Responses::Response::Truncation::OrSymbol),
@@ -685,6 +705,20 @@ module OpenAI
685
705
  # - [Structured Outputs](https://developers.openai.com/api/docs/guides/structured-outputs)
686
706
  text: nil,
687
707
 
708
+ # Usage reported by hosted tools, separate from base model `usage`. The field can
709
+ # be omitted when tool usage is unavailable. When present, tool families with no
710
+ # recorded usage have zero counts.
711
+ #
712
+ # `image_gen` sums available token counts across image generation calls. Calls
713
+ # with missing or incomplete usage records may be skipped. Output token details
714
+ # and cached input counts can be omitted. An omitted cache count means cache usage
715
+ # is unknown.
716
+ #
717
+ # `web_search.num_requests` counts billable searches. Discounted searches and
718
+ # actions such as opening a page are excluded. Use billing records to reconcile
719
+ # final charges.
720
+ tool_usage: nil,
721
+
688
722
  # An integer between 0 and 20 specifying the maximum number of most likely tokens
689
723
  # to return at each token position, each with an associated log probability. In
690
724
  # some cases, the number of returned tokens may be fewer than requested.
@@ -751,6 +785,7 @@ module OpenAI
751
785
  service_tier: T.nilable(OpenAI::Responses::Response::ServiceTier::TaggedSymbol),
752
786
  status: OpenAI::Responses::ResponseStatus::TaggedSymbol,
753
787
  text: OpenAI::Responses::ResponseTextConfig,
788
+ tool_usage: OpenAI::Responses::Response::ToolUsage,
754
789
  top_logprobs: T.nilable(Integer),
755
790
  truncation: T.nilable(OpenAI::Responses::Response::Truncation::TaggedSymbol),
756
791
  usage: OpenAI::Responses::ResponseUsage,
@@ -1904,6 +1939,365 @@ module OpenAI
1904
1939
  end
1905
1940
  end
1906
1941
 
1942
+ class ToolUsage < OpenAI::Internal::Type::BaseModel
1943
+ OrHash = T.type_alias do
1944
+ T.any(
1945
+ OpenAI::Responses::Response::ToolUsage,
1946
+ OpenAI::Internal::AnyHash
1947
+ )
1948
+ end
1949
+
1950
+ # Aggregated usage statistics for image generation tool calls.
1951
+ sig { returns(OpenAI::Responses::Response::ToolUsage::ImageGen) }
1952
+ attr_reader :image_gen
1953
+
1954
+ sig { params(image_gen: OpenAI::Responses::Response::ToolUsage::ImageGen::OrHash).void }
1955
+ attr_writer :image_gen
1956
+
1957
+ # Aggregated billable usage statistics for web search tool calls.
1958
+ sig { returns(OpenAI::Responses::Response::ToolUsage::WebSearch) }
1959
+ attr_reader :web_search
1960
+
1961
+ sig { params(web_search: OpenAI::Responses::Response::ToolUsage::WebSearch::OrHash).void }
1962
+ attr_writer :web_search
1963
+
1964
+ # Usage reported by hosted tools, separate from base model `usage`. The field can
1965
+ # be omitted when tool usage is unavailable. When present, tool families with no
1966
+ # recorded usage have zero counts.
1967
+ #
1968
+ # `image_gen` sums available token counts across image generation calls. Calls
1969
+ # with missing or incomplete usage records may be skipped. Output token details
1970
+ # and cached input counts can be omitted. An omitted cache count means cache usage
1971
+ # is unknown.
1972
+ #
1973
+ # `web_search.num_requests` counts billable searches. Discounted searches and
1974
+ # actions such as opening a page are excluded. Use billing records to reconcile
1975
+ # final charges.
1976
+ sig do
1977
+ params(
1978
+
1979
+ image_gen: OpenAI::Responses::Response::ToolUsage::ImageGen::OrHash,
1980
+
1981
+ web_search: OpenAI::Responses::Response::ToolUsage::WebSearch::OrHash
1982
+ )
1983
+ .returns(T.attached_class)
1984
+ end
1985
+ def self.new(
1986
+
1987
+ # Aggregated usage statistics for image generation tool calls.
1988
+ image_gen:,
1989
+
1990
+ # Aggregated billable usage statistics for web search tool calls.
1991
+
1992
+ web_search:
1993
+ )
1994
+ end
1995
+
1996
+ sig do
1997
+ override.returns(
1998
+ {
1999
+ image_gen: OpenAI::Responses::Response::ToolUsage::ImageGen,
2000
+ web_search: OpenAI::Responses::Response::ToolUsage::WebSearch
2001
+ }
2002
+ )
2003
+ end
2004
+ def to_hash
2005
+ end
2006
+
2007
+ class ImageGen < OpenAI::Internal::Type::BaseModel
2008
+ OrHash = T.type_alias do
2009
+ T.any(
2010
+ OpenAI::Responses::Response::ToolUsage::ImageGen,
2011
+ OpenAI::Internal::AnyHash
2012
+ )
2013
+ end
2014
+
2015
+ # The number of tokens (images and text) in the input prompt.
2016
+ sig { returns(Integer) }
2017
+ attr_accessor :input_tokens
2018
+
2019
+ # The input tokens detailed information for the image generation.
2020
+ sig { returns(OpenAI::Responses::Response::ToolUsage::ImageGen::InputTokensDetails) }
2021
+ attr_reader :input_tokens_details
2022
+
2023
+ sig {
2024
+ params(input_tokens_details: OpenAI::Responses::Response::ToolUsage::ImageGen::InputTokensDetails::OrHash)
2025
+ .void
2026
+ }
2027
+ attr_writer :input_tokens_details
2028
+
2029
+ # The number of output tokens generated by the model.
2030
+ sig { returns(Integer) }
2031
+ attr_accessor :output_tokens
2032
+
2033
+ # The total number of tokens (images and text) used for the image generation.
2034
+ sig { returns(Integer) }
2035
+ attr_accessor :total_tokens
2036
+
2037
+ sig { returns(T.nilable(Integer)) }
2038
+ attr_reader :cached_tokens
2039
+
2040
+ sig { params(cached_tokens: Integer).void }
2041
+ attr_writer :cached_tokens
2042
+
2043
+ sig { returns(T.nilable(OpenAI::Responses::Response::ToolUsage::ImageGen::CachedTokensDetails)) }
2044
+ attr_reader :cached_tokens_details
2045
+
2046
+ sig {
2047
+ params(
2048
+ cached_tokens_details: OpenAI::Responses::Response::ToolUsage::ImageGen::CachedTokensDetails::OrHash
2049
+ )
2050
+ .void
2051
+ }
2052
+ attr_writer :cached_tokens_details
2053
+
2054
+ # The output token details for the image generation.
2055
+ sig { returns(T.nilable(OpenAI::Responses::Response::ToolUsage::ImageGen::OutputTokensDetails)) }
2056
+ attr_reader :output_tokens_details
2057
+
2058
+ sig {
2059
+ params(
2060
+ output_tokens_details: OpenAI::Responses::Response::ToolUsage::ImageGen::OutputTokensDetails::OrHash
2061
+ )
2062
+ .void
2063
+ }
2064
+ attr_writer :output_tokens_details
2065
+
2066
+ # Aggregated usage statistics for image generation tool calls.
2067
+ sig do
2068
+ params(
2069
+
2070
+ input_tokens: Integer,
2071
+
2072
+ input_tokens_details: OpenAI::Responses::Response::ToolUsage::ImageGen::InputTokensDetails::OrHash,
2073
+
2074
+ output_tokens: Integer,
2075
+
2076
+ total_tokens: Integer,
2077
+
2078
+ cached_tokens: Integer,
2079
+
2080
+ cached_tokens_details: OpenAI::Responses::Response::ToolUsage::ImageGen::CachedTokensDetails::OrHash,
2081
+
2082
+ output_tokens_details: OpenAI::Responses::Response::ToolUsage::ImageGen::OutputTokensDetails::OrHash
2083
+ )
2084
+ .returns(T.attached_class)
2085
+ end
2086
+ def self.new(
2087
+
2088
+ # The number of tokens (images and text) in the input prompt.
2089
+ input_tokens:,
2090
+
2091
+ # The input tokens detailed information for the image generation.
2092
+ input_tokens_details:,
2093
+
2094
+ # The number of output tokens generated by the model.
2095
+ output_tokens:,
2096
+
2097
+ # The total number of tokens (images and text) used for the image generation.
2098
+ total_tokens:,
2099
+
2100
+ cached_tokens: nil,
2101
+
2102
+ cached_tokens_details: nil,
2103
+
2104
+ # The output token details for the image generation.
2105
+
2106
+ output_tokens_details: nil
2107
+ )
2108
+ end
2109
+
2110
+ sig do
2111
+ override.returns(
2112
+ {
2113
+ input_tokens: Integer,
2114
+ input_tokens_details: OpenAI::Responses::Response::ToolUsage::ImageGen::InputTokensDetails,
2115
+ output_tokens: Integer,
2116
+ total_tokens: Integer,
2117
+ cached_tokens: Integer,
2118
+ cached_tokens_details: OpenAI::Responses::Response::ToolUsage::ImageGen::CachedTokensDetails,
2119
+ output_tokens_details: OpenAI::Responses::Response::ToolUsage::ImageGen::OutputTokensDetails
2120
+ }
2121
+ )
2122
+ end
2123
+ def to_hash
2124
+ end
2125
+
2126
+ class InputTokensDetails < OpenAI::Internal::Type::BaseModel
2127
+ OrHash = T.type_alias do
2128
+ T.any(
2129
+ OpenAI::Responses::Response::ToolUsage::ImageGen::InputTokensDetails,
2130
+ OpenAI::Internal::AnyHash
2131
+ )
2132
+ end
2133
+
2134
+ # The number of image tokens in the input prompt.
2135
+ sig { returns(Integer) }
2136
+ attr_accessor :image_tokens
2137
+
2138
+ # The number of text tokens in the input prompt.
2139
+ sig { returns(Integer) }
2140
+ attr_accessor :text_tokens
2141
+
2142
+ # The input tokens detailed information for the image generation.
2143
+ sig do
2144
+ params(
2145
+
2146
+ image_tokens: Integer,
2147
+
2148
+ text_tokens: Integer
2149
+ )
2150
+ .returns(T.attached_class)
2151
+ end
2152
+ def self.new(
2153
+
2154
+ # The number of image tokens in the input prompt.
2155
+ image_tokens:,
2156
+
2157
+ # The number of text tokens in the input prompt.
2158
+
2159
+ text_tokens:
2160
+ )
2161
+ end
2162
+
2163
+ sig do
2164
+ override.returns(
2165
+ {image_tokens: Integer, text_tokens: Integer}
2166
+ )
2167
+ end
2168
+ def to_hash
2169
+ end
2170
+
2171
+ end
2172
+
2173
+ class CachedTokensDetails < OpenAI::Internal::Type::BaseModel
2174
+ OrHash = T.type_alias do
2175
+ T.any(
2176
+ OpenAI::Responses::Response::ToolUsage::ImageGen::CachedTokensDetails,
2177
+ OpenAI::Internal::AnyHash
2178
+ )
2179
+ end
2180
+
2181
+ sig { returns(Integer) }
2182
+ attr_accessor :cached_image_tokens
2183
+
2184
+ sig { returns(Integer) }
2185
+ attr_accessor :cached_text_tokens
2186
+
2187
+ sig do
2188
+ params(
2189
+
2190
+ cached_image_tokens: Integer,
2191
+
2192
+ cached_text_tokens: Integer
2193
+ )
2194
+ .returns(T.attached_class)
2195
+ end
2196
+ def self.new(
2197
+
2198
+ cached_image_tokens:,
2199
+
2200
+ cached_text_tokens:
2201
+ )
2202
+ end
2203
+
2204
+ sig do
2205
+ override.returns(
2206
+ {cached_image_tokens: Integer, cached_text_tokens: Integer}
2207
+ )
2208
+ end
2209
+ def to_hash
2210
+ end
2211
+
2212
+ end
2213
+
2214
+ class OutputTokensDetails < OpenAI::Internal::Type::BaseModel
2215
+ OrHash = T.type_alias do
2216
+ T.any(
2217
+ OpenAI::Responses::Response::ToolUsage::ImageGen::OutputTokensDetails,
2218
+ OpenAI::Internal::AnyHash
2219
+ )
2220
+ end
2221
+
2222
+ # The number of image output tokens generated by the model.
2223
+ sig { returns(Integer) }
2224
+ attr_accessor :image_tokens
2225
+
2226
+ # The number of text output tokens generated by the model.
2227
+ sig { returns(Integer) }
2228
+ attr_accessor :text_tokens
2229
+
2230
+ # The output token details for the image generation.
2231
+ sig do
2232
+ params(
2233
+
2234
+ image_tokens: Integer,
2235
+
2236
+ text_tokens: Integer
2237
+ )
2238
+ .returns(T.attached_class)
2239
+ end
2240
+ def self.new(
2241
+
2242
+ # The number of image output tokens generated by the model.
2243
+ image_tokens:,
2244
+
2245
+ # The number of text output tokens generated by the model.
2246
+
2247
+ text_tokens:
2248
+ )
2249
+ end
2250
+
2251
+ sig do
2252
+ override.returns(
2253
+ {image_tokens: Integer, text_tokens: Integer}
2254
+ )
2255
+ end
2256
+ def to_hash
2257
+ end
2258
+
2259
+ end
2260
+ end
2261
+
2262
+ class WebSearch < OpenAI::Internal::Type::BaseModel
2263
+ OrHash = T.type_alias do
2264
+ T.any(
2265
+ OpenAI::Responses::Response::ToolUsage::WebSearch,
2266
+ OpenAI::Internal::AnyHash
2267
+ )
2268
+ end
2269
+
2270
+ # The number of billable web search requests issued.
2271
+ sig { returns(Integer) }
2272
+ attr_accessor :num_requests
2273
+
2274
+ # Aggregated billable usage statistics for web search tool calls.
2275
+ sig do
2276
+ params(
2277
+
2278
+ num_requests: Integer
2279
+ )
2280
+ .returns(T.attached_class)
2281
+ end
2282
+ def self.new(
2283
+
2284
+ # The number of billable web search requests issued.
2285
+
2286
+ num_requests:
2287
+ )
2288
+ end
2289
+
2290
+ sig do
2291
+ override.returns(
2292
+ {num_requests: Integer}
2293
+ )
2294
+ end
2295
+ def to_hash
2296
+ end
2297
+
2298
+ end
2299
+ end
2300
+
1907
2301
  # The truncation strategy to use for the model response.
1908
2302
  #
1909
2303
  # - `auto`: If the input to this Response exceeds the model's context window size,