openai 0.83.0 → 0.85.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 (293) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -0
  3. data/README.md +1 -1
  4. data/SECURITY.md +10 -0
  5. data/docs/architecture/security-model.md +267 -0
  6. data/lib/openai/auth/workload_identity_auth.rb +17 -2
  7. data/lib/openai/client.rb +24 -6
  8. data/lib/openai/errors.rb +1 -1
  9. data/lib/openai/helpers/streaming/chat_completion_stream.rb +18 -10
  10. data/lib/openai/helpers/streaming/response_events.rb +2 -2
  11. data/lib/openai/helpers/streaming/response_stream.rb +80 -44
  12. data/lib/openai/helpers/structured_output/array_of.rb +2 -2
  13. data/lib/openai/helpers/structured_output/base_model.rb +19 -5
  14. data/lib/openai/helpers/structured_output/chat_completion_parser.rb +12 -3
  15. data/lib/openai/helpers/structured_output/json_schema_converter.rb +34 -11
  16. data/lib/openai/helpers/structured_output/response_parser.rb +1 -1
  17. data/lib/openai/internal/type/base_model.rb +2 -2
  18. data/lib/openai/internal/type/converter.rb +1 -1
  19. data/lib/openai/internal/util.rb +2 -2
  20. data/lib/openai/internal/vector_store_file_uploader.rb +1 -1
  21. data/lib/openai/models/admin/organization/usage_costs_params.rb +10 -1
  22. data/lib/openai/models/batch.rb +4 -4
  23. data/lib/openai/models/beta/beta_custom_tool.rb +13 -1
  24. data/lib/openai/models/beta/beta_function_tool.rb +8 -1
  25. data/lib/openai/models/beta/beta_namespace_tool.rb +10 -1
  26. data/lib/openai/models/beta/beta_response.rb +26 -18
  27. data/lib/openai/models/beta/beta_response_configuration_update_item.rb +103 -0
  28. data/lib/openai/models/beta/beta_response_configuration_update_item_param.rb +104 -0
  29. data/lib/openai/models/beta/beta_response_custom_tool_call.rb +9 -1
  30. data/lib/openai/models/beta/beta_response_custom_tool_call_item.rb +3 -1
  31. data/lib/openai/models/beta/beta_response_error.rb +96 -1
  32. data/lib/openai/models/beta/beta_response_function_tool_call.rb +9 -1
  33. data/lib/openai/models/beta/beta_response_function_tool_call_item.rb +3 -1
  34. data/lib/openai/models/beta/beta_response_incomplete_event.rb +4 -0
  35. data/lib/openai/models/beta/beta_response_inject_event.rb +2 -2
  36. data/lib/openai/models/beta/beta_response_inject_failed_event.rb +2 -2
  37. data/lib/openai/models/beta/beta_response_input_item.rb +6 -1
  38. data/lib/openai/models/beta/beta_response_item.rb +5 -1
  39. data/lib/openai/models/beta/beta_response_steer_accepted_event.rb +81 -0
  40. data/lib/openai/models/beta/beta_response_steer_error_code.rb +61 -0
  41. data/lib/openai/models/beta/beta_response_steer_event.rb +75 -0
  42. data/lib/openai/models/beta/beta_response_steer_failed_event.rb +151 -0
  43. data/lib/openai/models/beta/beta_response_steer_input.rb +360 -0
  44. data/lib/openai/models/beta/beta_response_steer_input_content.rb +28 -0
  45. data/lib/openai/models/beta/beta_response_steer_pending_event.rb +113 -0
  46. data/lib/openai/models/beta/beta_response_steer_pending_reason.rb +26 -0
  47. data/lib/openai/models/beta/beta_response_steer_required_input.rb +215 -0
  48. data/lib/openai/models/beta/beta_response_stream_event.rb +4 -0
  49. data/lib/openai/models/beta/beta_response_usage.rb +1 -12
  50. data/lib/openai/models/beta/beta_responses_client_event.rb +45 -16
  51. data/lib/openai/models/beta/beta_responses_server_event.rb +164 -2
  52. data/lib/openai/models/beta/response_compact_params.rb +13 -10
  53. data/lib/openai/models/beta/response_create_params.rb +14 -15
  54. data/lib/openai/models/beta/responses/beta_response_item_list.rb +2 -2
  55. data/lib/openai/models/beta/responses/input_token_count_params.rb +3 -3
  56. data/lib/openai/models/chat/completion_create_params.rb +8 -8
  57. data/lib/openai/models/chat_model.rb +1 -0
  58. data/lib/openai/models/completion_usage.rb +1 -12
  59. data/lib/openai/models/conversations/conversation_create_params.rb +2 -2
  60. data/lib/openai/models/conversations/conversation_item.rb +5 -1
  61. data/lib/openai/models/conversations/conversation_item_list.rb +2 -2
  62. data/lib/openai/models/conversations/item_create_params.rb +2 -2
  63. data/lib/openai/models/error_object.rb +90 -1
  64. data/lib/openai/models/eval_create_response.rb +1 -1
  65. data/lib/openai/models/eval_list_response.rb +1 -1
  66. data/lib/openai/models/eval_retrieve_response.rb +1 -1
  67. data/lib/openai/models/eval_update_response.rb +1 -1
  68. data/lib/openai/models/evals/create_eval_completions_run_data_source.rb +2 -2
  69. data/lib/openai/models/reasoning.rb +0 -2
  70. data/lib/openai/models/responses/custom_tool.rb +13 -1
  71. data/lib/openai/models/responses/function_tool.rb +8 -1
  72. data/lib/openai/models/responses/input_token_count_params.rb +3 -3
  73. data/lib/openai/models/responses/namespace_tool.rb +10 -1
  74. data/lib/openai/models/responses/response.rb +20 -13
  75. data/lib/openai/models/responses/response_compact_params.rb +13 -10
  76. data/lib/openai/models/responses/response_configuration_update_item.rb +56 -0
  77. data/lib/openai/models/responses/response_configuration_update_item_param.rb +57 -0
  78. data/lib/openai/models/responses/response_create_params.rb +8 -10
  79. data/lib/openai/models/responses/response_custom_tool_call.rb +9 -1
  80. data/lib/openai/models/responses/response_custom_tool_call_item.rb +3 -1
  81. data/lib/openai/models/responses/response_error.rb +96 -1
  82. data/lib/openai/models/responses/response_function_tool_call.rb +9 -1
  83. data/lib/openai/models/responses/response_function_tool_call_item.rb +3 -1
  84. data/lib/openai/models/responses/response_incomplete_event.rb +4 -0
  85. data/lib/openai/models/responses/response_input_item.rb +6 -1
  86. data/lib/openai/models/responses/response_item.rb +5 -1
  87. data/lib/openai/models/responses/response_item_list.rb +2 -2
  88. data/lib/openai/models/responses/response_steer_accepted_event.rb +79 -0
  89. data/lib/openai/models/responses/response_steer_error_code.rb +59 -0
  90. data/lib/openai/models/responses/response_steer_event.rb +73 -0
  91. data/lib/openai/models/responses/response_steer_failed_event.rb +149 -0
  92. data/lib/openai/models/responses/response_steer_input.rb +304 -0
  93. data/lib/openai/models/responses/response_steer_input_content.rb +26 -0
  94. data/lib/openai/models/responses/response_steer_pending_event.rb +111 -0
  95. data/lib/openai/models/responses/response_steer_pending_reason.rb +24 -0
  96. data/lib/openai/models/responses/response_steer_required_input.rb +213 -0
  97. data/lib/openai/models/responses/response_stream_event.rb +4 -0
  98. data/lib/openai/models/responses/response_usage.rb +1 -12
  99. data/lib/openai/models/responses/responses_client_event.rb +872 -771
  100. data/lib/openai/models/responses/responses_server_event.rb +162 -2
  101. data/lib/openai/models/safety/alert_retrieve_params.rb +24 -0
  102. data/lib/openai/models/safety/safety_alert.rb +96 -0
  103. data/lib/openai/models/video_create_error.rb +93 -1
  104. data/lib/openai/models/webhooks/safety_alert_created_webhook_event.rb +63 -0
  105. data/lib/openai/models/webhooks/safety_org_alert_created_webhook_event.rb +63 -0
  106. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +7 -1
  107. data/lib/openai/models.rb +2 -0
  108. data/lib/openai/net_http_client.rb +1 -1
  109. data/lib/openai/providers/bedrock.rb +20 -12
  110. data/lib/openai/resources/admin/organization/usage.rb +3 -1
  111. data/lib/openai/resources/beta/responses/input_items.rb +1 -1
  112. data/lib/openai/resources/beta/responses/input_tokens.rb +1 -1
  113. data/lib/openai/resources/beta/responses.rb +8 -8
  114. data/lib/openai/resources/chat/completions.rb +2 -2
  115. data/lib/openai/resources/conversations/items.rb +3 -3
  116. data/lib/openai/resources/conversations.rb +1 -1
  117. data/lib/openai/resources/responses/input_items.rb +1 -1
  118. data/lib/openai/resources/responses/input_tokens.rb +1 -1
  119. data/lib/openai/resources/responses.rb +10 -9
  120. data/lib/openai/resources/safety/alerts.rb +37 -0
  121. data/lib/openai/resources/safety.rb +18 -0
  122. data/lib/openai/resources/webhooks.rb +1 -1
  123. data/lib/openai/version.rb +1 -1
  124. data/lib/openai.rb +29 -0
  125. data/rbi/openai/client.rbi +3 -0
  126. data/rbi/openai/errors.rbi +1 -1
  127. data/rbi/openai/helpers/streaming/events.rbi +2 -2
  128. data/rbi/openai/helpers/streaming/response_stream.rbi +3 -3
  129. data/rbi/openai/models/admin/organization/usage_costs_params.rbi +15 -0
  130. data/rbi/openai/models/batch.rbi +6 -6
  131. data/rbi/openai/models/beta/beta_custom_tool.rbi +15 -0
  132. data/rbi/openai/models/beta/beta_function_tool.rbi +11 -0
  133. data/rbi/openai/models/beta/beta_namespace_tool.rbi +15 -0
  134. data/rbi/openai/models/beta/beta_response.rbi +21 -18
  135. data/rbi/openai/models/beta/beta_response_configuration_update_item.rbi +200 -0
  136. data/rbi/openai/models/beta/beta_response_configuration_update_item_param.rbi +207 -0
  137. data/rbi/openai/models/beta/beta_response_custom_tool_call.rbi +13 -0
  138. data/rbi/openai/models/beta/beta_response_custom_tool_call_item.rbi +6 -0
  139. data/rbi/openai/models/beta/beta_response_error.rbi +161 -3
  140. data/rbi/openai/models/beta/beta_response_function_tool_call.rbi +13 -0
  141. data/rbi/openai/models/beta/beta_response_function_tool_call_item.rbi +6 -0
  142. data/rbi/openai/models/beta/beta_response_incomplete_event.rbi +4 -0
  143. data/rbi/openai/models/beta/beta_response_inject_event.rbi +3 -0
  144. data/rbi/openai/models/beta/beta_response_inject_failed_event.rbi +3 -0
  145. data/rbi/openai/models/beta/beta_response_input_item.rbi +1 -0
  146. data/rbi/openai/models/beta/beta_response_item.rbi +1 -0
  147. data/rbi/openai/models/beta/beta_response_steer_accepted_event.rbi +148 -0
  148. data/rbi/openai/models/beta/beta_response_steer_error_code.rbi +65 -0
  149. data/rbi/openai/models/beta/beta_response_steer_event.rbi +118 -0
  150. data/rbi/openai/models/beta/beta_response_steer_failed_event.rbi +267 -0
  151. data/rbi/openai/models/beta/beta_response_steer_input.rbi +602 -0
  152. data/rbi/openai/models/beta/beta_response_steer_input_content.rbi +31 -0
  153. data/rbi/openai/models/beta/beta_response_steer_pending_event.rbi +222 -0
  154. data/rbi/openai/models/beta/beta_response_steer_pending_reason.rbi +35 -0
  155. data/rbi/openai/models/beta/beta_response_steer_required_input.rbi +379 -0
  156. data/rbi/openai/models/beta/beta_response_usage.rbi +3 -13
  157. data/rbi/openai/models/beta/beta_responses_client_event.rbi +14 -15
  158. data/rbi/openai/models/beta/beta_responses_server_event.rbi +206 -3
  159. data/rbi/openai/models/beta/response_compact_params.rbi +10 -9
  160. data/rbi/openai/models/beta/response_create_params.rbi +10 -15
  161. data/rbi/openai/models/beta/responses/beta_response_item_list.rbi +1 -0
  162. data/rbi/openai/models/chat/completion_create_params.rbi +9 -9
  163. data/rbi/openai/models/chat_model.rbi +1 -0
  164. data/rbi/openai/models/completion_usage.rbi +0 -10
  165. data/rbi/openai/models/conversations/conversation_create_params.rbi +3 -0
  166. data/rbi/openai/models/conversations/conversation_item.rbi +1 -0
  167. data/rbi/openai/models/conversations/conversation_item_list.rbi +1 -0
  168. data/rbi/openai/models/conversations/item_create_params.rbi +3 -0
  169. data/rbi/openai/models/error_object.rbi +156 -3
  170. data/rbi/openai/models/eval_create_response.rbi +1 -1
  171. data/rbi/openai/models/eval_list_response.rbi +1 -1
  172. data/rbi/openai/models/eval_retrieve_response.rbi +1 -1
  173. data/rbi/openai/models/eval_update_response.rbi +1 -1
  174. data/rbi/openai/models/evals/create_eval_completions_run_data_source.rbi +2 -2
  175. data/rbi/openai/models/reasoning.rbi +0 -2
  176. data/rbi/openai/models/responses/custom_tool.rbi +15 -0
  177. data/rbi/openai/models/responses/function_tool.rbi +11 -0
  178. data/rbi/openai/models/responses/namespace_tool.rbi +15 -0
  179. data/rbi/openai/models/responses/response.rbi +17 -13
  180. data/rbi/openai/models/responses/response_compact_params.rbi +10 -9
  181. data/rbi/openai/models/responses/response_configuration_update_item.rbi +112 -0
  182. data/rbi/openai/models/responses/response_configuration_update_item_param.rbi +117 -0
  183. data/rbi/openai/models/responses/response_create_params.rbi +6 -10
  184. data/rbi/openai/models/responses/response_custom_tool_call.rbi +13 -0
  185. data/rbi/openai/models/responses/response_custom_tool_call_item.rbi +6 -0
  186. data/rbi/openai/models/responses/response_error.rbi +161 -3
  187. data/rbi/openai/models/responses/response_function_tool_call.rbi +13 -0
  188. data/rbi/openai/models/responses/response_function_tool_call_item.rbi +6 -0
  189. data/rbi/openai/models/responses/response_incomplete_event.rbi +4 -0
  190. data/rbi/openai/models/responses/response_input_item.rbi +1 -0
  191. data/rbi/openai/models/responses/response_item.rbi +1 -0
  192. data/rbi/openai/models/responses/response_item_list.rbi +1 -0
  193. data/rbi/openai/models/responses/response_steer_accepted_event.rbi +146 -0
  194. data/rbi/openai/models/responses/response_steer_error_code.rbi +63 -0
  195. data/rbi/openai/models/responses/response_steer_event.rbi +119 -0
  196. data/rbi/openai/models/responses/response_steer_failed_event.rbi +268 -0
  197. data/rbi/openai/models/responses/response_steer_input.rbi +474 -0
  198. data/rbi/openai/models/responses/response_steer_input_content.rbi +29 -0
  199. data/rbi/openai/models/responses/response_steer_pending_event.rbi +220 -0
  200. data/rbi/openai/models/responses/response_steer_pending_reason.rbi +33 -0
  201. data/rbi/openai/models/responses/response_steer_required_input.rbi +377 -0
  202. data/rbi/openai/models/responses/response_usage.rbi +3 -13
  203. data/rbi/openai/models/responses/responses_client_event.rbi +1205 -1041
  204. data/rbi/openai/models/responses/responses_server_event.rbi +202 -3
  205. data/rbi/openai/models/safety/alert_retrieve_params.rbi +55 -0
  206. data/rbi/openai/models/safety/safety_alert.rbi +147 -0
  207. data/rbi/openai/models/video_create_error.rbi +149 -3
  208. data/rbi/openai/models/webhooks/safety_alert_created_webhook_event.rbi +130 -0
  209. data/rbi/openai/models/webhooks/safety_org_alert_created_webhook_event.rbi +130 -0
  210. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +3 -1
  211. data/rbi/openai/models.rbi +2 -0
  212. data/rbi/openai/resources/admin/organization/usage.rbi +4 -0
  213. data/rbi/openai/resources/beta/responses.rbi +7 -11
  214. data/rbi/openai/resources/chat/completions.rbi +6 -6
  215. data/rbi/openai/resources/conversations/items.rbi +1 -0
  216. data/rbi/openai/resources/conversations.rbi +1 -0
  217. data/rbi/openai/resources/responses.rbi +9 -13
  218. data/rbi/openai/resources/safety/alerts.rbi +30 -0
  219. data/rbi/openai/resources/safety.rbi +18 -0
  220. data/rbi/openai/resources/webhooks.rbi +3 -1
  221. data/sig/openai/client.rbs +2 -0
  222. data/sig/openai/errors.rbs +1 -1
  223. data/sig/openai/internal/transport/base_client.rbs +4 -19
  224. data/sig/openai/models/admin/organization/usage_costs_params.rbs +7 -0
  225. data/sig/openai/models/beta/beta_custom_tool.rbs +7 -0
  226. data/sig/openai/models/beta/beta_function_tool.rbs +7 -0
  227. data/sig/openai/models/beta/beta_namespace_tool.rbs +7 -0
  228. data/sig/openai/models/beta/beta_response.rbs +7 -2
  229. data/sig/openai/models/beta/beta_response_configuration_update_item.rbs +91 -0
  230. data/sig/openai/models/beta/beta_response_configuration_update_item_param.rbs +87 -0
  231. data/sig/openai/models/beta/beta_response_custom_tool_call.rbs +7 -0
  232. data/sig/openai/models/beta/beta_response_custom_tool_call_item.rbs +3 -0
  233. data/sig/openai/models/beta/beta_response_error.rbs +82 -3
  234. data/sig/openai/models/beta/beta_response_function_tool_call.rbs +7 -0
  235. data/sig/openai/models/beta/beta_response_function_tool_call_item.rbs +3 -0
  236. data/sig/openai/models/beta/beta_response_input_item.rbs +1 -0
  237. data/sig/openai/models/beta/beta_response_item.rbs +1 -0
  238. data/sig/openai/models/beta/beta_response_steer_accepted_event.rbs +53 -0
  239. data/sig/openai/models/beta/beta_response_steer_error_code.rbs +31 -0
  240. data/sig/openai/models/beta/beta_response_steer_event.rbs +34 -0
  241. data/sig/openai/models/beta/beta_response_steer_failed_event.rbs +102 -0
  242. data/sig/openai/models/beta/beta_response_steer_input.rbs +214 -0
  243. data/sig/openai/models/beta/beta_response_steer_input_content.rbs +18 -0
  244. data/sig/openai/models/beta/beta_response_steer_pending_event.rbs +63 -0
  245. data/sig/openai/models/beta/beta_response_steer_pending_reason.rbs +16 -0
  246. data/sig/openai/models/beta/beta_response_steer_required_input.rbs +161 -0
  247. data/sig/openai/models/beta/beta_response_usage.rbs +3 -8
  248. data/sig/openai/models/beta/beta_responses_client_event.rbs +4 -1
  249. data/sig/openai/models/beta/beta_responses_server_event.rbs +80 -3
  250. data/sig/openai/models/beta/response_compact_params.rbs +3 -1
  251. data/sig/openai/models/beta/response_create_params.rbs +3 -1
  252. data/sig/openai/models/chat_model.rbs +3 -1
  253. data/sig/openai/models/completion_usage.rbs +0 -5
  254. data/sig/openai/models/conversations/conversation_item.rbs +1 -0
  255. data/sig/openai/models/error_object.rbs +82 -3
  256. data/sig/openai/models/responses/custom_tool.rbs +7 -0
  257. data/sig/openai/models/responses/function_tool.rbs +7 -0
  258. data/sig/openai/models/responses/namespace_tool.rbs +7 -0
  259. data/sig/openai/models/responses/response.rbs +4 -1
  260. data/sig/openai/models/responses/response_compact_params.rbs +3 -1
  261. data/sig/openai/models/responses/response_configuration_update_item.rbs +46 -0
  262. data/sig/openai/models/responses/response_configuration_update_item_param.rbs +46 -0
  263. data/sig/openai/models/responses/response_custom_tool_call.rbs +7 -0
  264. data/sig/openai/models/responses/response_custom_tool_call_item.rbs +3 -0
  265. data/sig/openai/models/responses/response_error.rbs +79 -3
  266. data/sig/openai/models/responses/response_function_tool_call.rbs +7 -0
  267. data/sig/openai/models/responses/response_function_tool_call_item.rbs +3 -0
  268. data/sig/openai/models/responses/response_input_item.rbs +1 -0
  269. data/sig/openai/models/responses/response_item.rbs +1 -0
  270. data/sig/openai/models/responses/response_steer_accepted_event.rbs +51 -0
  271. data/sig/openai/models/responses/response_steer_error_code.rbs +29 -0
  272. data/sig/openai/models/responses/response_steer_event.rbs +32 -0
  273. data/sig/openai/models/responses/response_steer_failed_event.rbs +100 -0
  274. data/sig/openai/models/responses/response_steer_input.rbs +182 -0
  275. data/sig/openai/models/responses/response_steer_input_content.rbs +16 -0
  276. data/sig/openai/models/responses/response_steer_pending_event.rbs +61 -0
  277. data/sig/openai/models/responses/response_steer_pending_reason.rbs +13 -0
  278. data/sig/openai/models/responses/response_steer_required_input.rbs +159 -0
  279. data/sig/openai/models/responses/response_usage.rbs +3 -8
  280. data/sig/openai/models/responses/responses_client_event.rbs +355 -344
  281. data/sig/openai/models/responses/responses_server_event.rbs +80 -3
  282. data/sig/openai/models/safety/alert_retrieve_params.rbs +22 -0
  283. data/sig/openai/models/safety/safety_alert.rbs +81 -0
  284. data/sig/openai/models/video_create_error.rbs +87 -3
  285. data/sig/openai/models/webhooks/safety_alert_created_webhook_event.rbs +52 -0
  286. data/sig/openai/models/webhooks/safety_org_alert_created_webhook_event.rbs +52 -0
  287. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +2 -0
  288. data/sig/openai/models.rbs +2 -0
  289. data/sig/openai/resources/admin/organization/usage.rbs +1 -0
  290. data/sig/openai/resources/safety/alerts.rbs +14 -0
  291. data/sig/openai/resources/safety.rbs +9 -0
  292. data/sig/openai/resources/webhooks.rbs +3 -1
  293. metadata +86 -1
@@ -61,6 +61,14 @@ module OpenAI
61
61
  sig { params(limit: Integer).void }
62
62
  attr_writer :limit
63
63
 
64
+ # Return only costs for these exact line item names. Each value must match the
65
+ # complete `line_item` value, for example `gpt-6-astra, input_tokens`.
66
+ sig { returns(T.nilable(T::Array[String])) }
67
+ attr_reader :line_items
68
+
69
+ sig { params(line_items: T::Array[String]).void }
70
+ attr_writer :line_items
71
+
64
72
  # A cursor for use in pagination. Corresponding to the `next_page` field from the
65
73
  # previous response.
66
74
  sig { returns(T.nilable(String)) }
@@ -91,6 +99,8 @@ module OpenAI
91
99
 
92
100
  limit: Integer,
93
101
 
102
+ line_items: T::Array[String],
103
+
94
104
  page: String,
95
105
 
96
106
  project_ids: T::Array[String],
@@ -122,6 +132,10 @@ module OpenAI
122
132
  # 180, and the default is 7.
123
133
  limit: nil,
124
134
 
135
+ # Return only costs for these exact line item names. Each value must match the
136
+ # complete `line_item` value, for example `gpt-6-astra, input_tokens`.
137
+ line_items: nil,
138
+
125
139
  # A cursor for use in pagination. Corresponding to the `next_page` field from the
126
140
  # previous response.
127
141
  page: nil,
@@ -142,6 +156,7 @@ module OpenAI
142
156
  end_time: Integer,
143
157
  group_by: T::Array[OpenAI::Admin::Organization::UsageCostsParams::GroupBy::OrSymbol],
144
158
  limit: Integer,
159
+ line_items: T::Array[String],
145
160
  page: String,
146
161
  project_ids: T::Array[String],
147
162
  request_options: OpenAI::RequestOptions
@@ -117,9 +117,9 @@ module OpenAI
117
117
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
118
118
  attr_accessor :metadata
119
119
 
120
- # Model ID used to process the batch, like `gpt-5-2025-08-07`. OpenAI offers a
121
- # wide range of models with different capabilities, performance characteristics,
122
- # and price points. Refer to the
120
+ # Model ID used to process the batch, like `gpt-6-astra`. OpenAI offers a wide
121
+ # range of models with different capabilities, performance characteristics, and
122
+ # price points. Refer to the
123
123
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
124
124
  # available models.
125
125
  sig { returns(T.nilable(String)) }
@@ -256,9 +256,9 @@ module OpenAI
256
256
  # a maximum length of 512 characters.
257
257
  metadata: nil,
258
258
 
259
- # Model ID used to process the batch, like `gpt-5-2025-08-07`. OpenAI offers a
260
- # wide range of models with different capabilities, performance characteristics,
261
- # and price points. Refer to the
259
+ # Model ID used to process the batch, like `gpt-6-astra`. OpenAI offers a wide
260
+ # range of models with different capabilities, performance characteristics, and
261
+ # price points. Refer to the
262
262
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
263
263
  # available models.
264
264
  model: nil,
@@ -28,6 +28,14 @@ module OpenAI
28
28
  sig { returns(T.nilable(T::Array[OpenAI::Beta::BetaCustomTool::AllowedCaller::OrSymbol])) }
29
29
  attr_accessor :allowed_callers
30
30
 
31
+ # Whether the tool response can be returned asynchronously versus immediately
32
+ # returned on next response creation.
33
+ sig { returns(T.nilable(T::Boolean)) }
34
+ attr_reader :async
35
+
36
+ sig { params(async: T::Boolean).void }
37
+ attr_writer :async
38
+
31
39
  # Whether this tool should be deferred and discovered via tool search.
32
40
  sig { returns(T.nilable(T::Boolean)) }
33
41
  attr_reader :defer_loading
@@ -70,6 +78,8 @@ module OpenAI
70
78
 
71
79
  allowed_callers: T.nilable(T::Array[OpenAI::Beta::BetaCustomTool::AllowedCaller::OrSymbol]),
72
80
 
81
+ async: T::Boolean,
82
+
73
83
  defer_loading: T::Boolean,
74
84
 
75
85
  description: String,
@@ -91,6 +101,10 @@ module OpenAI
91
101
  # The tool invocation context(s).
92
102
  allowed_callers: nil,
93
103
 
104
+ # Whether the tool response can be returned asynchronously versus immediately
105
+ # returned on next response creation.
106
+ async: nil,
107
+
94
108
  # Whether this tool should be deferred and discovered via tool search.
95
109
  defer_loading: nil,
96
110
 
@@ -112,6 +126,7 @@ module OpenAI
112
126
  name: String,
113
127
  type: Symbol,
114
128
  allowed_callers: T.nilable(T::Array[OpenAI::Beta::BetaCustomTool::AllowedCaller::OrSymbol]),
129
+ async: T::Boolean,
115
130
  defer_loading: T::Boolean,
116
131
  description: String,
117
132
  format_: T.any(OpenAI::Beta::BetaCustomTool::Format::Text, OpenAI::Beta::BetaCustomTool::Format::Grammar)
@@ -36,6 +36,12 @@ module OpenAI
36
36
  sig { returns(T.nilable(T::Array[OpenAI::Beta::BetaFunctionTool::AllowedCaller::OrSymbol])) }
37
37
  attr_accessor :allowed_callers
38
38
 
39
+ sig { returns(T.nilable(T::Boolean)) }
40
+ attr_reader :async
41
+
42
+ sig { params(async: T::Boolean).void }
43
+ attr_writer :async
44
+
39
45
  # Whether this function is deferred and loaded via tool search.
40
46
  sig { returns(T.nilable(T::Boolean)) }
41
47
  attr_reader :defer_loading
@@ -67,6 +73,8 @@ module OpenAI
67
73
 
68
74
  allowed_callers: T.nilable(T::Array[OpenAI::Beta::BetaFunctionTool::AllowedCaller::OrSymbol]),
69
75
 
76
+ async: T::Boolean,
77
+
70
78
  defer_loading: T::Boolean,
71
79
 
72
80
  description: T.nilable(String),
@@ -91,6 +99,8 @@ module OpenAI
91
99
  # The tool invocation context(s).
92
100
  allowed_callers: nil,
93
101
 
102
+ async: nil,
103
+
94
104
  # Whether this function is deferred and loaded via tool search.
95
105
  defer_loading: nil,
96
106
 
@@ -116,6 +126,7 @@ module OpenAI
116
126
  strict: T.nilable(T::Boolean),
117
127
  type: Symbol,
118
128
  allowed_callers: T.nilable(T::Array[OpenAI::Beta::BetaFunctionTool::AllowedCaller::OrSymbol]),
129
+ async: T::Boolean,
119
130
  defer_loading: T::Boolean,
120
131
  description: T.nilable(String),
121
132
  output_schema: T.nilable(T::Hash[Symbol, T.anything])
@@ -106,6 +106,14 @@ module OpenAI
106
106
  }
107
107
  attr_accessor :allowed_callers
108
108
 
109
+ # Whether the tool response can be returned asynchronously versus immediately
110
+ # returned on next response creation.
111
+ sig { returns(T.nilable(T::Boolean)) }
112
+ attr_reader :async
113
+
114
+ sig { params(async: T::Boolean).void }
115
+ attr_writer :async
116
+
109
117
  # Whether this function should be deferred and discovered via tool search.
110
118
  sig { returns(T.nilable(T::Boolean)) }
111
119
  attr_reader :defer_loading
@@ -139,6 +147,8 @@ module OpenAI
139
147
  T::Array[OpenAI::Beta::BetaNamespaceTool::Tool::Function::AllowedCaller::OrSymbol]
140
148
  ),
141
149
 
150
+ async: T::Boolean,
151
+
142
152
  defer_loading: T::Boolean,
143
153
 
144
154
  description: T.nilable(String),
@@ -160,6 +170,10 @@ module OpenAI
160
170
  # The tool invocation context(s).
161
171
  allowed_callers: nil,
162
172
 
173
+ # Whether the tool response can be returned asynchronously versus immediately
174
+ # returned on next response creation.
175
+ async: nil,
176
+
163
177
  # Whether this function should be deferred and discovered via tool search.
164
178
  defer_loading: nil,
165
179
 
@@ -188,6 +202,7 @@ module OpenAI
188
202
  allowed_callers: T.nilable(
189
203
  T::Array[OpenAI::Beta::BetaNamespaceTool::Tool::Function::AllowedCaller::OrSymbol]
190
204
  ),
205
+ async: T::Boolean,
191
206
  defer_loading: T::Boolean,
192
207
  description: T.nilable(String),
193
208
  output_schema: T.nilable(T::Hash[Symbol, T.anything]),
@@ -55,9 +55,9 @@ module OpenAI
55
55
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
56
56
  attr_accessor :metadata
57
57
 
58
- # Model ID used to generate the response, like `gpt-4o` or `o3`. OpenAI offers a
59
- # wide range of models with different capabilities, performance characteristics,
60
- # and price points. Refer to the
58
+ # Model ID used to generate the response, like `gpt-6-astra`. OpenAI offers a wide
59
+ # range of models with different capabilities, performance characteristics, and
60
+ # price points. Refer to the
61
61
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
62
62
  # available models.
63
63
  sig { returns(OpenAI::Beta::BetaResponse::Model::Variants) }
@@ -212,8 +212,6 @@ module OpenAI
212
212
  sig { returns(T.nilable(OpenAI::Beta::BetaResponse::PromptCacheRetention::TaggedSymbol)) }
213
213
  attr_accessor :prompt_cache_retention
214
214
 
215
- # **gpt-5 and o-series models only**
216
- #
217
215
  # Configuration options for
218
216
  # [reasoning models](https://platform.openai.com/docs/guides/reasoning).
219
217
  sig { returns(T.nilable(OpenAI::Beta::BetaResponse::Reasoning)) }
@@ -477,9 +475,9 @@ module OpenAI
477
475
  # a maximum length of 512 characters.
478
476
  metadata:,
479
477
 
480
- # Model ID used to generate the response, like `gpt-4o` or `o3`. OpenAI offers a
481
- # wide range of models with different capabilities, performance characteristics,
482
- # and price points. Refer to the
478
+ # Model ID used to generate the response, like `gpt-6-astra`. OpenAI offers a wide
479
+ # range of models with different capabilities, performance characteristics, and
480
+ # price points. Refer to the
483
481
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
484
482
  # available models.
485
483
  model:,
@@ -600,8 +598,6 @@ module OpenAI
600
598
  # `prompt_cache_retention` is not specified.
601
599
  prompt_cache_retention: nil,
602
600
 
603
- # **gpt-5 and o-series models only**
604
- #
605
601
  # Configuration options for
606
602
  # [reasoning models](https://platform.openai.com/docs/guides/reasoning).
607
603
  reasoning: nil,
@@ -733,7 +729,9 @@ module OpenAI
733
729
  )
734
730
  end
735
731
 
736
- # The reason why the response is incomplete.
732
+ # The reason why the response is incomplete. `steered` means the response stopped
733
+ # at a safe output boundary after a WebSocket `response.steer` event. The server
734
+ # can then create a successor response automatically with the queued input.
737
735
  sig { returns(T.nilable(OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol)) }
738
736
  attr_reader :reason
739
737
 
@@ -750,7 +748,9 @@ module OpenAI
750
748
  end
751
749
  def self.new(
752
750
 
753
- # The reason why the response is incomplete.
751
+ # The reason why the response is incomplete. `steered` means the response stopped
752
+ # at a safe output boundary after a WebSocket `response.steer` event. The server
753
+ # can then create a successor response automatically with the queued input.
754
754
 
755
755
  reason: nil
756
756
  )
@@ -764,7 +764,9 @@ module OpenAI
764
764
  def to_hash
765
765
  end
766
766
 
767
- # The reason why the response is incomplete.
767
+ # The reason why the response is incomplete. `steered` means the response stopped
768
+ # at a safe output boundary after a WebSocket `response.steer` event. The server
769
+ # can then create a successor response automatically with the queued input.
768
770
  module Reason
769
771
  extend OpenAI::Internal::Type::Enum
770
772
 
@@ -775,7 +777,9 @@ module OpenAI
775
777
  :max_output_tokens,
776
778
  OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol
777
779
  )
780
+ MAX_MESSAGES = T.let(:max_messages, OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol)
778
781
  CONTENT_FILTER = T.let(:content_filter, OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol)
782
+ STEERED = T.let(:steered, OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol)
779
783
 
780
784
  sig { override.returns(T::Array[OpenAI::Beta::BetaResponse::IncompleteDetails::Reason::TaggedSymbol]) }
781
785
  def self.values
@@ -804,9 +808,9 @@ module OpenAI
804
808
 
805
809
  end
806
810
 
807
- # Model ID used to generate the response, like `gpt-4o` or `o3`. OpenAI offers a
808
- # wide range of models with different capabilities, performance characteristics,
809
- # and price points. Refer to the
811
+ # Model ID used to generate the response, like `gpt-6-astra`. OpenAI offers a wide
812
+ # range of models with different capabilities, performance characteristics, and
813
+ # price points. Refer to the
810
814
  # [model guide](https://platform.openai.com/docs/models) to browse and compare
811
815
  # available models.
812
816
  module Model
@@ -824,6 +828,7 @@ module OpenAI
824
828
 
825
829
  OrSymbol = T.type_alias { T.any(Symbol, String) }
826
830
 
831
+ GPT_6_ASTRA = T.let(:"gpt-6-astra", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
827
832
  GPT_5_6_SOL = T.let(:"gpt-5.6-sol", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
828
833
  GPT_5_6_TERRA = T.let(:"gpt-5.6-terra", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
829
834
  GPT_5_6_LUNA = T.let(:"gpt-5.6-luna", OpenAI::Beta::BetaResponse::Model::TaggedSymbol)
@@ -1714,8 +1719,6 @@ module OpenAI
1714
1719
  sig { returns(T.nilable(OpenAI::Beta::BetaResponse::Reasoning::Summary::TaggedSymbol)) }
1715
1720
  attr_accessor :summary
1716
1721
 
1717
- # **gpt-5 and o-series models only**
1718
- #
1719
1722
  # Configuration options for
1720
1723
  # [reasoning models](https://platform.openai.com/docs/guides/reasoning).
1721
1724
  sig do
@@ -0,0 +1,200 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ BetaResponseConfigurationUpdateItem = Beta::BetaResponseConfigurationUpdateItem
7
+
8
+ module Beta
9
+
10
+ class BetaResponseConfigurationUpdateItem < OpenAI::Internal::Type::BaseModel
11
+
12
+ OrHash = T.type_alias do
13
+ T.any(
14
+ OpenAI::Beta::BetaResponseConfigurationUpdateItem,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ # The unique ID of the configuration update item.
20
+ sig { returns(String) }
21
+ attr_accessor :id
22
+
23
+ # The item type. Always `configuration_update`.
24
+ sig { returns(Symbol) }
25
+ attr_accessor :type
26
+
27
+ # The agent that produced this item.
28
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent)) }
29
+ attr_reader :agent
30
+
31
+ sig { params(agent: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent::OrHash).void }
32
+ attr_writer :agent
33
+
34
+ # The reasoning configuration applied by this update.
35
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning)) }
36
+ attr_reader :reasoning
37
+
38
+ sig { params(reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::OrHash).void }
39
+ attr_writer :reasoning
40
+
41
+ # A configuration update that applies to subsequent responses until it is replaced
42
+ # by another configuration update.
43
+ sig do
44
+ params(
45
+
46
+ id: String,
47
+
48
+ agent: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent::OrHash,
49
+
50
+ reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::OrHash,
51
+
52
+ type: Symbol
53
+ )
54
+ .returns(T.attached_class)
55
+ end
56
+ def self.new(
57
+
58
+ # The unique ID of the configuration update item.
59
+ id:,
60
+
61
+ # The agent that produced this item.
62
+ agent: nil,
63
+
64
+ # The reasoning configuration applied by this update.
65
+ reasoning: nil,
66
+
67
+ # The item type. Always `configuration_update`.
68
+
69
+ type: :configuration_update
70
+ )
71
+ end
72
+
73
+ sig do
74
+ override.returns(
75
+ {
76
+ id: String,
77
+ type: Symbol,
78
+ agent: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent,
79
+ reasoning: OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning
80
+ }
81
+ )
82
+ end
83
+ def to_hash
84
+ end
85
+
86
+ class Agent < OpenAI::Internal::Type::BaseModel
87
+ OrHash = T.type_alias do
88
+ T.any(
89
+ OpenAI::Beta::BetaResponseConfigurationUpdateItem::Agent,
90
+ OpenAI::Internal::AnyHash
91
+ )
92
+ end
93
+
94
+ # The canonical name of the agent that produced this item.
95
+ sig { returns(String) }
96
+ attr_accessor :agent_name
97
+
98
+ # The agent that produced this item.
99
+ sig do
100
+ params(
101
+
102
+ agent_name: String
103
+ )
104
+ .returns(T.attached_class)
105
+ end
106
+ def self.new(
107
+
108
+ # The canonical name of the agent that produced this item.
109
+
110
+ agent_name:
111
+ )
112
+ end
113
+
114
+ sig do
115
+ override.returns(
116
+ {agent_name: String}
117
+ )
118
+ end
119
+ def to_hash
120
+ end
121
+
122
+ end
123
+
124
+ class Reasoning < OpenAI::Internal::Type::BaseModel
125
+ OrHash = T.type_alias do
126
+ T.any(
127
+ OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning,
128
+ OpenAI::Internal::AnyHash
129
+ )
130
+ end
131
+
132
+ # The reasoning effort used for subsequent responses until another configuration
133
+ # update replaces it.
134
+ sig {
135
+ returns(T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol))
136
+ }
137
+ attr_accessor :effort
138
+
139
+ # The reasoning configuration applied by this update.
140
+ sig do
141
+ params(
142
+
143
+ effort: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::OrSymbol)
144
+ )
145
+ .returns(T.attached_class)
146
+ end
147
+ def self.new(
148
+
149
+ # The reasoning effort used for subsequent responses until another configuration
150
+ # update replaces it.
151
+
152
+ effort: nil
153
+ )
154
+ end
155
+
156
+ sig do
157
+ override.returns(
158
+ {effort: T.nilable(OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)}
159
+ )
160
+ end
161
+ def to_hash
162
+ end
163
+
164
+ # The reasoning effort used for subsequent responses until another configuration
165
+ # update replaces it.
166
+ module Effort
167
+ extend OpenAI::Internal::Type::Enum
168
+
169
+ TaggedSymbol = T.type_alias {
170
+ T.all(Symbol, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort)
171
+ }
172
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
173
+
174
+ NONE = T.let(:none, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
175
+ MINIMAL = T.let(
176
+ :minimal,
177
+ OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol
178
+ )
179
+ LOW = T.let(:low, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
180
+ MEDIUM = T.let(:medium, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
181
+ HIGH = T.let(:high, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
182
+ XHIGH = T.let(:xhigh, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
183
+ MAX = T.let(:max, OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol)
184
+
185
+ sig {
186
+ override.returns(
187
+ T::Array[OpenAI::Beta::BetaResponseConfigurationUpdateItem::Reasoning::Effort::TaggedSymbol]
188
+ )
189
+ }
190
+ def self.values
191
+ end
192
+ end
193
+ end
194
+
195
+ end
196
+
197
+ end
198
+
199
+ end
200
+ end