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
@@ -79,7 +79,14 @@ module OpenAI
79
79
 
80
80
  class CreateEvalResponsesRunDataSource < OpenAI::Internal::Type::BaseModel
81
81
  # Determines what populates the `item` namespace in this run's data source.
82
- attr_accessor source: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::source
82
+ attr_reader source: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::source
83
+
84
+ # Determines what populates the `item` namespace in this run's data source.
85
+ def source=: (
86
+ OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::source
87
+ | { id: String, type: :file_id }
88
+ ) -> (OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::source
89
+ | { id: String, type: :file_id })
83
90
 
84
91
  # The type of run data source. Always `responses`.
85
92
  attr_accessor type: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::type_
@@ -96,7 +103,9 @@ module OpenAI
96
103
  # namespace.
97
104
  def input_messages=: (
98
105
  OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::input_messages
99
- ) -> OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::input_messages
106
+ | { item_reference: String, type: :item_reference }
107
+ ) -> (OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::input_messages
108
+ | { item_reference: String, type: :item_reference })
100
109
 
101
110
  # The name of the model to use for generating completions (e.g. "o3-mini").
102
111
  attr_reader model: String?
@@ -122,9 +131,11 @@ module OpenAI
122
131
  # @param model
123
132
  # The name of the model to use for generating completions (e.g. "o3-mini").
124
133
  def initialize: (
125
- source: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::source,
134
+ source: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::source
135
+ | { id: String, type: :file_id },
126
136
  type: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::type_,
127
- ?input_messages: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::input_messages,
137
+ ?input_messages: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::input_messages
138
+ | { item_reference: String, type: :item_reference },
128
139
  ?model: String,
129
140
  ?sampling_params: OpenAI::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::SamplingParams
130
141
  ) -> void
@@ -361,7 +372,15 @@ module OpenAI
361
372
  class Template < OpenAI::Internal::Type::BaseModel
362
373
  # A list of chat messages forming the prompt or context. May include variable
363
374
  # references to the `item` namespace, ie {{item.name}}.
364
- attr_accessor template: ::Array[OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::template]
375
+ attr_reader template: ::Array[OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::template]
376
+
377
+ # A list of chat messages forming the prompt or context. May include variable
378
+ # references to the `item` namespace, ie {{item.name}}.
379
+ def template=: (
380
+ ::Array[OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::template
381
+ | { content: String, role: String }]
382
+ ) -> ::Array[(OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::template
383
+ | { content: String, role: String })]
365
384
 
366
385
  # The type of input messages. Always `template`.
367
386
  attr_accessor type: :template
@@ -372,7 +391,8 @@ module OpenAI
372
391
  # @param type
373
392
  # The type of input messages. Always `template`.
374
393
  def initialize: (
375
- template: ::Array[OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::template],
394
+ template: ::Array[OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::template
395
+ | { content: String, role: String }],
376
396
  ?type: :template
377
397
  ) -> void
378
398
 
@@ -416,7 +436,25 @@ module OpenAI
416
436
  class EvalItem < OpenAI::Internal::Type::BaseModel
417
437
  # Inputs to the model - can contain template strings. Supports text, output text,
418
438
  # input images, and input audio, either as a single item or an array of items.
419
- attr_accessor content: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::Template::EvalItem::content
439
+ attr_reader content: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::Template::EvalItem::content
440
+
441
+ # Inputs to the model - can contain template strings. Supports text, output text,
442
+ # input images, and input audio, either as a single item or an array of items.
443
+ def content=: (
444
+ OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::Template::EvalItem::content
445
+ | { text: String, type: :output_text }
446
+ | {
447
+ image_url: String,
448
+ type: :input_image,
449
+ ?detail: String
450
+ }
451
+ ) -> (OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::Template::EvalItem::content
452
+ | { text: String, type: :output_text }
453
+ | {
454
+ image_url: String,
455
+ type: :input_image,
456
+ ?detail: String
457
+ })
420
458
 
421
459
  # The role of the message input. One of `user`, `assistant`, `system`, or
422
460
  # `developer`.
@@ -439,7 +477,13 @@ module OpenAI
439
477
  # @param type
440
478
  # The type of the message input. Always `message`.
441
479
  def initialize: (
442
- content: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::Template::EvalItem::content,
480
+ content: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::Template::EvalItem::content
481
+ | { text: String, type: :output_text }
482
+ | {
483
+ image_url: String,
484
+ type: :input_image,
485
+ ?detail: String
486
+ },
443
487
  role: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::Template::EvalItem::role,
444
488
  ?type: OpenAI::Models::Evals::RunCreateParams::DataSource::CreateEvalResponsesRunDataSource::InputMessages::Template::Template::EvalItem::type_
445
489
  ) -> void
@@ -6,6 +6,7 @@ module OpenAI
6
6
  prompt: String,
7
7
  ?background: OpenAI::Models::ImageEditParams::background?,
8
8
  ?input_fidelity: OpenAI::Models::ImageEditParams::input_fidelity?,
9
+ ?markup: OpenAI::Internal::file_input,
9
10
  ?mask: OpenAI::Internal::file_input,
10
11
  ?model: OpenAI::Models::ImageEditParams::model?,
11
12
  ?n: Integer?,
@@ -26,12 +27,12 @@ module OpenAI
26
27
 
27
28
  # The image(s) to edit. Must be a supported image file or an array of images.
28
29
  #
29
- # For the GPT image models (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
30
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
31
- # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
32
- # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`), each image should
33
- # be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to 16
34
- # images.
30
+ # For the GPT image models (`gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
31
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
32
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`, and
33
+ # `gpt-image-2.5-flare-2026-09-08`), each image should be a `png`, `webp`, or
34
+ # `jpg` file less than 50MB. You can provide up to 16 images.
35
+ # `chatgpt-image-latest` follows the same input constraints as GPT image models.
35
36
  #
36
37
  # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
37
38
  # metadata. Use `OpenAI::FilePart` when you need to override the filename or
@@ -55,10 +56,30 @@ module OpenAI
55
56
 
56
57
  # Control how much effort the model will exert to match the style and features,
57
58
  # especially facial features, of input images. Supports `high` and `low` on
58
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
59
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
59
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
60
+ # this parameter. Defaults to `low` on supported models.
60
61
  attr_accessor input_fidelity: OpenAI::Models::ImageEditParams::input_fidelity?
61
62
 
63
+ # A transparent PNG overlaid on the first image to guide the edit. Must match that
64
+ # image's dimensions after orientation and contain transparent pixels. Supports
65
+ # GPT Image 2.5 and 2.6. Cannot be combined with mask.
66
+ #
67
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
68
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
69
+ # content type.
70
+ attr_reader markup: OpenAI::Internal::file_input?
71
+
72
+ # A transparent PNG overlaid on the first image to guide the edit. Must match that
73
+ # image's dimensions after orientation and contain transparent pixels. Supports
74
+ # GPT Image 2.5 and 2.6. Cannot be combined with mask.
75
+ #
76
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
77
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
78
+ # content type.
79
+ def markup=: (
80
+ OpenAI::Internal::file_input
81
+ ) -> OpenAI::Internal::file_input
82
+
62
83
  # An additional image whose fully transparent areas (e.g. where alpha is zero)
63
84
  # indicate where `image` should be edited. If there are multiple images provided,
64
85
  # the mask will be applied on the first image. Must be a valid PNG file, less than
@@ -156,12 +177,12 @@ module OpenAI
156
177
  # @param image
157
178
  # The image(s) to edit. Must be a supported image file or an array of images.
158
179
  #
159
- # For the GPT image models (`gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
160
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
161
- # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
162
- # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`), each image should
163
- # be a `png`, `webp`, or `jpg` file less than 50MB. You can provide up to 16
164
- # images.
180
+ # For the GPT image models (`gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
181
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
182
+ # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`, and
183
+ # `gpt-image-2.5-flare-2026-09-08`), each image should be a `png`, `webp`, or
184
+ # `jpg` file less than 50MB. You can provide up to 16 images.
185
+ # `chatgpt-image-latest` follows the same input constraints as GPT image models.
165
186
  #
166
187
  # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
167
188
  # metadata. Use `OpenAI::FilePart` when you need to override the filename or
@@ -182,8 +203,16 @@ module OpenAI
182
203
  # @param input_fidelity
183
204
  # Control how much effort the model will exert to match the style and features,
184
205
  # especially facial features, of input images. Supports `high` and `low` on
185
- # `gpt-image-1` and `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For
186
- # `gpt-image-2`, omit this parameter. Defaults to `low` on supported models.
206
+ # `gpt-image-1.5`; `gpt-image-1-mini` supports only `low`. For `gpt-image-2`, omit
207
+ # this parameter. Defaults to `low` on supported models.
208
+ # @param markup
209
+ # A transparent PNG overlaid on the first image to guide the edit. Must match that
210
+ # image's dimensions after orientation and contain transparent pixels. Supports
211
+ # GPT Image 2.5 and 2.6. Cannot be combined with mask.
212
+ #
213
+ # `String`, `StringIO`, and pathless `IO` inputs are sent with generic upload
214
+ # metadata. Use `OpenAI::FilePart` when you need to override the filename or
215
+ # content type.
187
216
  # @param mask
188
217
  # An additional image whose fully transparent areas (e.g. where alpha is zero)
189
218
  # indicate where `image` should be edited. If there are multiple images provided,
@@ -256,6 +285,7 @@ module OpenAI
256
285
  prompt: String,
257
286
  ?background: OpenAI::Models::ImageEditParams::background?,
258
287
  ?input_fidelity: OpenAI::Models::ImageEditParams::input_fidelity?,
288
+ ?markup: OpenAI::Internal::file_input,
259
289
  ?mask: OpenAI::Internal::file_input,
260
290
  ?model: OpenAI::Models::ImageEditParams::model?,
261
291
  ?n: Integer?,
@@ -275,6 +305,7 @@ module OpenAI
275
305
  prompt: String,
276
306
  ?background: OpenAI::Models::ImageEditParams::background?,
277
307
  ?input_fidelity: OpenAI::Models::ImageEditParams::input_fidelity?,
308
+ ?markup: OpenAI::Internal::file_input,
278
309
  ?mask: OpenAI::Internal::file_input,
279
310
  ?model: OpenAI::Models::ImageEditParams::model?,
280
311
  ?n: Integer?,
@@ -26,6 +26,7 @@ module OpenAI
26
26
  | OpenAI::Live::InfoEvent
27
27
  | OpenAI::Live::ForkServerEvent::TransportDtmfReceived
28
28
  | OpenAI::Live::ForkServerEvent::TransportDtmfSend
29
+ | OpenAI::Live::ForkServerEvent::TransportDtmfSent
29
30
  | OpenAI::Live::ForkServerEvent::TransportRinging
30
31
  | OpenAI::Live::ForkServerEvent::TransportAnswered
31
32
  | OpenAI::Live::ForkServerEvent::TransportFailed
@@ -123,6 +124,44 @@ module OpenAI
123
124
  }
124
125
  end
125
126
 
127
+ type transport_dtmf_sent =
128
+ {
129
+ event: String,
130
+ event_id: String,
131
+ ?type: :"transport.dtmf.sent",
132
+ ?client_event_id: String
133
+ }
134
+
135
+ class TransportDtmfSent < OpenAI::Internal::Type::BaseModel
136
+ attr_accessor event: String
137
+
138
+ attr_accessor event_id: String
139
+
140
+ attr_accessor type: :"transport.dtmf.sent"
141
+
142
+ # The event_id of the client command, when supplied.
143
+ attr_reader client_event_id: String?
144
+
145
+ # The event_id of the client command, when supplied.
146
+ def client_event_id=: (String) -> String
147
+
148
+ # @param client_event_id
149
+ # The event_id of the client command, when supplied.
150
+ def initialize: (
151
+ event: String,
152
+ event_id: String,
153
+ ?client_event_id: String,
154
+ ?type: :"transport.dtmf.sent"
155
+ ) -> void
156
+
157
+ def to_hash: -> {
158
+ event: String,
159
+ event_id: String,
160
+ ?type: :"transport.dtmf.sent",
161
+ ?client_event_id: String
162
+ }
163
+ end
164
+
126
165
  type transport_ringing =
127
166
  { event_id: String, session_id: String, ?type: :"transport.ringing" }
128
167
 
@@ -26,6 +26,7 @@ module OpenAI
26
26
  | OpenAI::Live::InfoEvent
27
27
  | OpenAI::Live::ServerEvent::TransportDtmfReceived
28
28
  | OpenAI::Live::ServerEvent::TransportDtmfSend
29
+ | OpenAI::Live::ServerEvent::TransportDtmfSent
29
30
  | OpenAI::Live::ServerEvent::TransportRinging
30
31
  | OpenAI::Live::ServerEvent::TransportAnswered
31
32
  | OpenAI::Live::ServerEvent::TransportFailed
@@ -123,6 +124,44 @@ module OpenAI
123
124
  }
124
125
  end
125
126
 
127
+ type transport_dtmf_sent =
128
+ {
129
+ event: String,
130
+ event_id: String,
131
+ ?type: :"transport.dtmf.sent",
132
+ ?client_event_id: String
133
+ }
134
+
135
+ class TransportDtmfSent < OpenAI::Internal::Type::BaseModel
136
+ attr_accessor event: String
137
+
138
+ attr_accessor event_id: String
139
+
140
+ attr_accessor type: :"transport.dtmf.sent"
141
+
142
+ # The event_id of the client command, when supplied.
143
+ attr_reader client_event_id: String?
144
+
145
+ # The event_id of the client command, when supplied.
146
+ def client_event_id=: (String) -> String
147
+
148
+ # @param client_event_id
149
+ # The event_id of the client command, when supplied.
150
+ def initialize: (
151
+ event: String,
152
+ event_id: String,
153
+ ?client_event_id: String,
154
+ ?type: :"transport.dtmf.sent"
155
+ ) -> void
156
+
157
+ def to_hash: -> {
158
+ event: String,
159
+ event_id: String,
160
+ ?type: :"transport.dtmf.sent",
161
+ ?client_event_id: String
162
+ }
163
+ end
164
+
126
165
  type transport_ringing =
127
166
  { event_id: String, session_id: String, ?type: :"transport.ringing" }
128
167
 
@@ -67,7 +67,34 @@ module OpenAI
67
67
  # Who handles tasks delegated by the Live model. Omitted or null selects your
68
68
  # application; use `responses` or `decisions` to delegate to the corresponding
69
69
  # API.
70
- attr_accessor delegation: OpenAI::Models::Live::SessionAcceptParams::Session::delegation?
70
+ attr_reader delegation: OpenAI::Models::Live::SessionAcceptParams::Session::delegation?
71
+
72
+ # Who handles tasks delegated by the Live model. Omitted or null selects your
73
+ # application; use `responses` or `decisions` to delegate to the corresponding
74
+ # API.
75
+ def delegation=: (
76
+ (OpenAI::Models::Live::SessionAcceptParams::Session::delegation
77
+ | {
78
+ responses: OpenAI::Live::ResponsesDelegationConfig,
79
+ type: :responses,
80
+ ?acknowledgement_delay_ms: Integer
81
+ }
82
+ | {
83
+ decisions: OpenAI::Live::DecisionsDelegationConfig,
84
+ type: :decisions,
85
+ ?acknowledgement_delay_ms: Integer
86
+ })?
87
+ ) -> (OpenAI::Models::Live::SessionAcceptParams::Session::delegation
88
+ | {
89
+ responses: OpenAI::Live::ResponsesDelegationConfig,
90
+ type: :responses,
91
+ ?acknowledgement_delay_ms: Integer
92
+ }
93
+ | {
94
+ decisions: OpenAI::Live::DecisionsDelegationConfig,
95
+ type: :decisions,
96
+ ?acknowledgement_delay_ms: Integer
97
+ })?
71
98
 
72
99
  # Ordered text-only history supplied before startup. Supports developer, user, and
73
100
  # assistant messages with one text part each; at most 128 messages and a
@@ -147,7 +174,17 @@ module OpenAI
147
174
  def initialize: (
148
175
  model: OpenAI::Models::Live::SessionAcceptParams::Session::model,
149
176
  ?audio: OpenAI::Live::SessionAcceptParams::Session::Audio,
150
- ?delegation: OpenAI::Models::Live::SessionAcceptParams::Session::delegation?,
177
+ ?delegation: (OpenAI::Models::Live::SessionAcceptParams::Session::delegation
178
+ | {
179
+ responses: OpenAI::Live::ResponsesDelegationConfig,
180
+ type: :responses,
181
+ ?acknowledgement_delay_ms: Integer
182
+ }
183
+ | {
184
+ decisions: OpenAI::Live::DecisionsDelegationConfig,
185
+ type: :decisions,
186
+ ?acknowledgement_delay_ms: Integer
187
+ })?,
151
188
  ?input: ::Array[OpenAI::Models::Live::initial_item],
152
189
  ?instructions: String?,
153
190
  ?store: bool,
@@ -6,6 +6,7 @@ module OpenAI
6
6
  | OpenAI::Live::InputAudioMuteEvent
7
7
  | OpenAI::Live::InputAudioUnmuteEvent
8
8
  | OpenAI::Live::OutputAudioFixturePlayEvent
9
+ | OpenAI::Live::SidebandClientEvent::TransportDtmfSend
9
10
  | OpenAI::Live::InstructionsAppendEvent
10
11
  | OpenAI::Live::ThinkingAppendEvent
11
12
  | OpenAI::Live::CommentaryAppendEvent
@@ -19,6 +20,37 @@ module OpenAI
19
20
  module SidebandClientEvent
20
21
  extend OpenAI::Internal::Type::Union
21
22
 
23
+ type transport_dtmf_send =
24
+ { event: String, ?type: :"transport.dtmf.send", ?event_id: String? }
25
+
26
+ class TransportDtmfSend < OpenAI::Internal::Type::BaseModel
27
+ # The DTMF key to send: one of `0`–`9`, `A`–`D`, `*`, or `#`.
28
+ attr_accessor event: String
29
+
30
+ attr_accessor type: :"transport.dtmf.send"
31
+
32
+ # Optional client identifier for correlating this command with a server event's
33
+ # client_event_id or error.client_event_id.
34
+ attr_accessor event_id: String?
35
+
36
+ # @param event
37
+ # The DTMF key to send: one of `0`–`9`, `A`–`D`, `*`, or `#`.
38
+ # @param event_id
39
+ # Optional client identifier for correlating this command with a server event's
40
+ # client_event_id or error.client_event_id.
41
+ def initialize: (
42
+ event: String,
43
+ ?event_id: String?,
44
+ ?type: :"transport.dtmf.send"
45
+ ) -> void
46
+
47
+ def to_hash: -> {
48
+ event: String,
49
+ ?type: :"transport.dtmf.send",
50
+ ?event_id: String?
51
+ }
52
+ end
53
+
22
54
  def self?.variants: -> ::Array[OpenAI::Models::Live::sideband_client_event]
23
55
  end
24
56
  end
@@ -26,6 +26,7 @@ module OpenAI
26
26
  | OpenAI::Live::OutputAudioDeltaEvent
27
27
  | OpenAI::Live::SidebandServerEvent::TransportDtmfReceived
28
28
  | OpenAI::Live::SidebandServerEvent::TransportDtmfSend
29
+ | OpenAI::Live::SidebandServerEvent::TransportDtmfSent
29
30
  | OpenAI::Live::SidebandServerEvent::TransportRinging
30
31
  | OpenAI::Live::SidebandServerEvent::TransportAnswered
31
32
  | OpenAI::Live::SidebandServerEvent::TransportFailed
@@ -123,6 +124,44 @@ module OpenAI
123
124
  }
124
125
  end
125
126
 
127
+ type transport_dtmf_sent =
128
+ {
129
+ event: String,
130
+ event_id: String,
131
+ ?type: :"transport.dtmf.sent",
132
+ ?client_event_id: String
133
+ }
134
+
135
+ class TransportDtmfSent < OpenAI::Internal::Type::BaseModel
136
+ attr_accessor event: String
137
+
138
+ attr_accessor event_id: String
139
+
140
+ attr_accessor type: :"transport.dtmf.sent"
141
+
142
+ # The event_id of the client command, when supplied.
143
+ attr_reader client_event_id: String?
144
+
145
+ # The event_id of the client command, when supplied.
146
+ def client_event_id=: (String) -> String
147
+
148
+ # @param client_event_id
149
+ # The event_id of the client command, when supplied.
150
+ def initialize: (
151
+ event: String,
152
+ event_id: String,
153
+ ?client_event_id: String,
154
+ ?type: :"transport.dtmf.sent"
155
+ ) -> void
156
+
157
+ def to_hash: -> {
158
+ event: String,
159
+ event_id: String,
160
+ ?type: :"transport.dtmf.sent",
161
+ ?client_event_id: String
162
+ }
163
+ end
164
+
126
165
  type transport_ringing =
127
166
  { event_id: String, session_id: String, ?type: :"transport.ringing" }
128
167
 
@@ -11,6 +11,7 @@ module OpenAI
11
11
  | OpenAI::Realtime::RealtimeMcpListTools
12
12
  | OpenAI::Realtime::RealtimeMcpToolCall
13
13
  | OpenAI::Realtime::RealtimeMcpApprovalRequest
14
+ | OpenAI::Realtime::ConversationItemWithReference
14
15
 
15
16
  module ConversationItem
16
17
  extend OpenAI::Internal::Type::Union
@@ -77,7 +77,14 @@ module OpenAI
77
77
  attr_accessor text: OpenAI::Responses::InputTokenCountParams::Text?
78
78
 
79
79
  # Controls which tool the model should use, if any.
80
- attr_accessor tool_choice: OpenAI::Models::Responses::InputTokenCountParams::tool_choice?
80
+ attr_reader tool_choice: OpenAI::Models::Responses::InputTokenCountParams::tool_choice?
81
+
82
+ # Controls which tool the model should use, if any.
83
+ def tool_choice=: (
84
+ (OpenAI::Models::Responses::InputTokenCountParams::tool_choice
85
+ | { type: :programmatic_tool_calling })?
86
+ ) -> (OpenAI::Models::Responses::InputTokenCountParams::tool_choice
87
+ | { type: :programmatic_tool_calling })?
81
88
 
82
89
  # An array of tools the model may call while generating a response. You can
83
90
  # specify which tool to use by setting the `tool_choice` parameter.
@@ -158,7 +165,8 @@ module OpenAI
158
165
  ?previous_response_id: String?,
159
166
  ?reasoning: OpenAI::Reasoning?,
160
167
  ?text: OpenAI::Responses::InputTokenCountParams::Text?,
161
- ?tool_choice: OpenAI::Models::Responses::InputTokenCountParams::tool_choice?,
168
+ ?tool_choice: (OpenAI::Models::Responses::InputTokenCountParams::tool_choice
169
+ | { type: :programmatic_tool_calling })?,
162
170
  ?tools: ::Array[OpenAI::Models::Responses::tool]?,
163
171
  ?truncation: OpenAI::Models::Responses::InputTokenCountParams::truncation,
164
172
  ?request_options: OpenAI::request_opts