openai 0.98.0 → 0.100.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 (245) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/README.md +1 -1
  4. data/bedrock.md +17 -1
  5. data/lib/openai/client.rb +9 -0
  6. data/lib/openai/helpers/agents/session_stream.rb +11 -36
  7. data/lib/openai/helpers/agents/tools.rb +34 -4
  8. data/lib/openai/helpers/beta/agents/creation_stream.rb +26 -0
  9. data/lib/openai/helpers/beta/agents/function_tool.rb +11 -4
  10. data/lib/openai/helpers/beta/agents/tool_dispatcher.rb +74 -0
  11. data/lib/openai/helpers/beta/agents/tool_error.rb +28 -0
  12. data/lib/openai/models/admin/organization/usage_audio_speeches_response.rb +140 -5
  13. data/lib/openai/models/admin/organization/usage_audio_transcriptions_response.rb +140 -5
  14. data/lib/openai/models/admin/organization/usage_code_interpreter_sessions_response.rb +140 -5
  15. data/lib/openai/models/admin/organization/usage_completions_params.rb +9 -4
  16. data/lib/openai/models/admin/organization/usage_completions_response.rb +140 -5
  17. data/lib/openai/models/admin/organization/usage_costs_params.rb +16 -4
  18. data/lib/openai/models/admin/organization/usage_costs_response.rb +140 -5
  19. data/lib/openai/models/admin/organization/usage_embeddings_response.rb +140 -5
  20. data/lib/openai/models/admin/organization/usage_file_search_calls_response.rb +140 -5
  21. data/lib/openai/models/admin/organization/usage_images_response.rb +140 -5
  22. data/lib/openai/models/admin/organization/usage_moderations_response.rb +140 -5
  23. data/lib/openai/models/admin/organization/usage_vector_stores_response.rb +140 -5
  24. data/lib/openai/models/admin/organization/usage_web_search_calls_params.rb +9 -4
  25. data/lib/openai/models/admin/organization/usage_web_search_calls_response.rb +140 -5
  26. data/lib/openai/models/all_models.rb +42 -0
  27. data/lib/openai/models/audio/speech_create_params.rb +6 -0
  28. data/lib/openai/models/audio/voice.rb +75 -0
  29. data/lib/openai/models/audio/voice_create_params.rb +217 -0
  30. data/lib/openai/models/beta/agent_create_params.rb +0 -3
  31. data/lib/openai/models/beta/agent_update_params.rb +0 -3
  32. data/lib/openai/models/beta/agents/environments/template_create_params.rb +6 -6
  33. data/lib/openai/models/beta/agents/environments/template_update_params.rb +3 -6
  34. data/lib/openai/models/beta/agents/session_create_params.rb +0 -3
  35. data/lib/openai/models/beta/agents/session_update_params.rb +0 -3
  36. data/lib/openai/models/beta/agents/sessions/turns/item_list_params.rb +79 -0
  37. data/lib/openai/models/beta/beta_response.rb +220 -0
  38. data/lib/openai/models/beta/beta_response_computer_tool_call_output_item.rb +2 -2
  39. data/lib/openai/models/beta/beta_response_error.rb +12 -1
  40. data/lib/openai/models/beta/beta_responses_client_event.rb +220 -0
  41. data/lib/openai/models/beta/beta_responses_server_event.rb +12 -1
  42. data/lib/openai/models/beta/beta_tool.rb +15 -18
  43. data/lib/openai/models/beta/environment_param.rb +6 -6
  44. data/lib/openai/models/beta/response_compact_params.rb +220 -0
  45. data/lib/openai/models/beta/response_create_params.rb +220 -0
  46. data/lib/openai/models/beta/session_turn_error.rb +9 -0
  47. data/lib/openai/models/chat/chat_completion_audio_param.rb +6 -3
  48. data/lib/openai/models/chat/chat_completion_chunk.rb +85 -18
  49. data/lib/openai/models/chat_model.rb +178 -0
  50. data/lib/openai/models/error_object.rb +12 -1
  51. data/lib/openai/models/eval_create_params.rb +1 -1
  52. data/lib/openai/models/eval_create_response.rb +1 -1
  53. data/lib/openai/models/eval_list_response.rb +1 -1
  54. data/lib/openai/models/eval_retrieve_response.rb +1 -1
  55. data/lib/openai/models/eval_update_response.rb +1 -1
  56. data/lib/openai/models/fine_tuning/job_list_params.rb +14 -4
  57. data/lib/openai/models/graders/score_model_grader.rb +2 -2
  58. data/lib/openai/models/image.rb +14 -14
  59. data/lib/openai/models/image_create_variation_params.rb +7 -7
  60. data/lib/openai/models/image_edit_params.rb +88 -96
  61. data/lib/openai/models/image_generate_params.rb +51 -62
  62. data/lib/openai/models/image_model.rb +5 -3
  63. data/lib/openai/models/realtime/realtime_audio_config_output.rb +9 -6
  64. data/lib/openai/models/realtime/realtime_client_event.rb +9 -0
  65. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +9 -6
  66. data/lib/openai/models/realtime/session_update_event.rb +16 -0
  67. data/lib/openai/models/responses/response_compact_params.rb +220 -0
  68. data/lib/openai/models/responses/response_computer_tool_call_output_item.rb +2 -2
  69. data/lib/openai/models/responses/response_error.rb +12 -1
  70. data/lib/openai/models/responses/responses_server_event.rb +12 -1
  71. data/lib/openai/models/responses/tool.rb +15 -18
  72. data/lib/openai/models/responses_model.rb +42 -0
  73. data/lib/openai/models/video_create_error.rb +12 -1
  74. data/lib/openai/models/webhooks/agent_session_action_required_webhook_event.rb +109 -0
  75. data/lib/openai/models/webhooks/agent_session_created_webhook_event.rb +106 -0
  76. data/lib/openai/models/webhooks/agent_session_failed_webhook_event.rb +86 -0
  77. data/lib/openai/models/webhooks/agent_session_idle_webhook_event.rb +86 -0
  78. data/lib/openai/models/webhooks/agent_session_in_progress_webhook_event.rb +86 -0
  79. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +18 -2
  80. data/lib/openai/models/webhooks/webhook_create_params.rb +5 -0
  81. data/lib/openai/models/webhooks/webhook_test_params.rb +5 -0
  82. data/lib/openai/models/webhooks/webhook_update_params.rb +5 -0
  83. data/lib/openai/providers/bedrock.rb +20 -1
  84. data/lib/openai/resources/admin/organization/usage.rb +15 -6
  85. data/lib/openai/resources/audio/speech.rb +2 -0
  86. data/lib/openai/resources/audio/voices.rb +53 -0
  87. data/lib/openai/resources/audio.rb +5 -0
  88. data/lib/openai/resources/beta/agents/environments/templates.rb +3 -4
  89. data/lib/openai/resources/beta/agents/sessions/turns/items.rb +68 -0
  90. data/lib/openai/resources/beta/agents/sessions/turns.rb +4 -0
  91. data/lib/openai/resources/beta/agents/sessions.rb +22 -2
  92. data/lib/openai/resources/fine_tuning/jobs.rb +7 -2
  93. data/lib/openai/resources/images.rb +79 -109
  94. data/lib/openai/resources/webhooks.rb +1 -1
  95. data/lib/openai/version.rb +1 -1
  96. data/lib/openai.rb +10 -0
  97. data/rbi/openai/helpers/agents.rbi +2 -0
  98. data/rbi/openai/helpers/beta/agents/function_tool.rbi +8 -3
  99. data/rbi/openai/helpers/beta/agents/tool_error.rbi +19 -0
  100. data/rbi/openai/helpers/beta/agents.rbi +12 -0
  101. data/rbi/openai/models/admin/organization/usage_audio_speeches_response.rbi +213 -3
  102. data/rbi/openai/models/admin/organization/usage_audio_transcriptions_response.rbi +213 -3
  103. data/rbi/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbi +213 -3
  104. data/rbi/openai/models/admin/organization/usage_completions_params.rbi +9 -4
  105. data/rbi/openai/models/admin/organization/usage_completions_response.rbi +213 -3
  106. data/rbi/openai/models/admin/organization/usage_costs_params.rbi +16 -4
  107. data/rbi/openai/models/admin/organization/usage_costs_response.rbi +213 -3
  108. data/rbi/openai/models/admin/organization/usage_embeddings_response.rbi +213 -3
  109. data/rbi/openai/models/admin/organization/usage_file_search_calls_response.rbi +213 -3
  110. data/rbi/openai/models/admin/organization/usage_images_response.rbi +213 -3
  111. data/rbi/openai/models/admin/organization/usage_moderations_response.rbi +213 -3
  112. data/rbi/openai/models/admin/organization/usage_vector_stores_response.rbi +213 -3
  113. data/rbi/openai/models/admin/organization/usage_web_search_calls_params.rbi +12 -4
  114. data/rbi/openai/models/admin/organization/usage_web_search_calls_response.rbi +213 -3
  115. data/rbi/openai/models/audio/speech_create_params.rbi +6 -0
  116. data/rbi/openai/models/audio/voice.rbi +111 -0
  117. data/rbi/openai/models/audio/voice_create_params.rbi +321 -0
  118. data/rbi/openai/models/beta/agent_create_params.rbi +0 -3
  119. data/rbi/openai/models/beta/agent_update_params.rbi +0 -3
  120. data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +6 -6
  121. data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +3 -6
  122. data/rbi/openai/models/beta/agents/session_create_params.rbi +0 -3
  123. data/rbi/openai/models/beta/agents/session_update_params.rbi +0 -3
  124. data/rbi/openai/models/beta/agents/sessions/turns/item_list_params.rbi +139 -0
  125. data/rbi/openai/models/beta/beta_response_computer_tool_call_output_item.rbi +2 -2
  126. data/rbi/openai/models/beta/beta_response_error.rbi +12 -0
  127. data/rbi/openai/models/beta/beta_responses_server_event.rbi +12 -0
  128. data/rbi/openai/models/beta/beta_tool.rbi +15 -18
  129. data/rbi/openai/models/beta/environment_param.rbi +6 -6
  130. data/rbi/openai/models/beta/session_turn_error.rbi +18 -0
  131. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +6 -3
  132. data/rbi/openai/models/chat/chat_completion_chunk.rbi +123 -17
  133. data/rbi/openai/models/error_object.rbi +12 -0
  134. data/rbi/openai/models/eval_create_params.rbi +1 -1
  135. data/rbi/openai/models/eval_create_response.rbi +1 -1
  136. data/rbi/openai/models/eval_list_response.rbi +1 -1
  137. data/rbi/openai/models/eval_retrieve_response.rbi +1 -1
  138. data/rbi/openai/models/eval_update_response.rbi +1 -1
  139. data/rbi/openai/models/fine_tuning/job_list_params.rbi +14 -4
  140. data/rbi/openai/models/graders/score_model_grader.rbi +2 -2
  141. data/rbi/openai/models/image.rbi +14 -14
  142. data/rbi/openai/models/image_create_variation_params.rbi +6 -6
  143. data/rbi/openai/models/image_edit_params.rbi +73 -91
  144. data/rbi/openai/models/image_generate_params.rbi +30 -61
  145. data/rbi/openai/models/image_model.rbi +3 -3
  146. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +9 -6
  147. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +9 -6
  148. data/rbi/openai/models/realtime/session_update_event.rbi +16 -0
  149. data/rbi/openai/models/responses/response_computer_tool_call_output_item.rbi +2 -2
  150. data/rbi/openai/models/responses/response_error.rbi +12 -0
  151. data/rbi/openai/models/responses/responses_server_event.rbi +12 -0
  152. data/rbi/openai/models/responses/tool.rbi +15 -18
  153. data/rbi/openai/models/video_create_error.rbi +12 -0
  154. data/rbi/openai/models/webhooks/agent_session_action_required_webhook_event.rbi +222 -0
  155. data/rbi/openai/models/webhooks/agent_session_created_webhook_event.rbi +202 -0
  156. data/rbi/openai/models/webhooks/agent_session_failed_webhook_event.rbi +151 -0
  157. data/rbi/openai/models/webhooks/agent_session_idle_webhook_event.rbi +151 -0
  158. data/rbi/openai/models/webhooks/agent_session_in_progress_webhook_event.rbi +151 -0
  159. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +7 -1
  160. data/rbi/openai/models/webhooks/webhook_create_params.rbi +20 -0
  161. data/rbi/openai/models/webhooks/webhook_test_params.rbi +20 -0
  162. data/rbi/openai/models/webhooks/webhook_update_params.rbi +20 -0
  163. data/rbi/openai/resources/admin/organization/usage.rbi +15 -6
  164. data/rbi/openai/resources/audio/speech.rbi +2 -0
  165. data/rbi/openai/resources/audio/voices.rbi +49 -0
  166. data/rbi/openai/resources/audio.rbi +4 -0
  167. data/rbi/openai/resources/beta/agents/environments/templates.rbi +3 -4
  168. data/rbi/openai/resources/beta/agents/sessions/turns/items.rbi +62 -0
  169. data/rbi/openai/resources/beta/agents/sessions/turns.rbi +3 -0
  170. data/rbi/openai/resources/beta/agents/sessions.rbi +2 -0
  171. data/rbi/openai/resources/fine_tuning/jobs.rbi +7 -2
  172. data/rbi/openai/resources/images.rbi +77 -109
  173. data/rbi/openai/resources/webhooks.rbi +5 -0
  174. data/sig/openai/helpers/agents.rbs +3 -0
  175. data/sig/openai/helpers/beta/agents/function_tool.rbs +5 -2
  176. data/sig/openai/helpers/beta/agents/tool_error.rbs +17 -0
  177. data/sig/openai/helpers/beta/agents.rbs +5 -0
  178. data/sig/openai/models/admin/organization/usage_audio_speeches_response.rbs +107 -5
  179. data/sig/openai/models/admin/organization/usage_audio_transcriptions_response.rbs +107 -5
  180. data/sig/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbs +107 -5
  181. data/sig/openai/models/admin/organization/usage_completions_params.rbs +14 -6
  182. data/sig/openai/models/admin/organization/usage_completions_response.rbs +107 -5
  183. data/sig/openai/models/admin/organization/usage_costs_params.rbs +25 -7
  184. data/sig/openai/models/admin/organization/usage_costs_response.rbs +107 -5
  185. data/sig/openai/models/admin/organization/usage_embeddings_response.rbs +107 -5
  186. data/sig/openai/models/admin/organization/usage_file_search_calls_response.rbs +107 -5
  187. data/sig/openai/models/admin/organization/usage_images_response.rbs +107 -5
  188. data/sig/openai/models/admin/organization/usage_moderations_response.rbs +107 -5
  189. data/sig/openai/models/admin/organization/usage_vector_stores_response.rbs +107 -5
  190. data/sig/openai/models/admin/organization/usage_web_search_calls_params.rbs +19 -7
  191. data/sig/openai/models/admin/organization/usage_web_search_calls_response.rbs +107 -5
  192. data/sig/openai/models/audio/speech_create_params.rbs +4 -0
  193. data/sig/openai/models/audio/voice.rbs +70 -0
  194. data/sig/openai/models/audio/voice_create_params.rbs +203 -0
  195. data/sig/openai/models/beta/agent_create_params.rbs +1 -5
  196. data/sig/openai/models/beta/agent_update_params.rbs +1 -5
  197. data/sig/openai/models/beta/agents/environments/template_create_params.rbs +4 -4
  198. data/sig/openai/models/beta/agents/environments/template_update_params.rbs +2 -4
  199. data/sig/openai/models/beta/agents/session_create_params.rbs +1 -5
  200. data/sig/openai/models/beta/agents/session_update_params.rbs +1 -5
  201. data/sig/openai/models/beta/agents/sessions/turns/item_list_params.rbs +91 -0
  202. data/sig/openai/models/beta/beta_response_computer_tool_call_output_item.rbs +2 -2
  203. data/sig/openai/models/beta/beta_response_error.rbs +10 -0
  204. data/sig/openai/models/beta/beta_responses_server_event.rbs +10 -0
  205. data/sig/openai/models/beta/beta_tool.rbs +11 -15
  206. data/sig/openai/models/beta/environment_param.rbs +4 -4
  207. data/sig/openai/models/beta/session_turn_error.rbs +12 -0
  208. data/sig/openai/models/chat/chat_completion_audio_param.rbs +4 -2
  209. data/sig/openai/models/chat/chat_completion_chunk.rbs +96 -12
  210. data/sig/openai/models/error_object.rbs +10 -0
  211. data/sig/openai/models/eval_create_params.rbs +1 -1
  212. data/sig/openai/models/eval_create_response.rbs +1 -1
  213. data/sig/openai/models/eval_list_response.rbs +1 -1
  214. data/sig/openai/models/eval_retrieve_response.rbs +1 -1
  215. data/sig/openai/models/eval_update_response.rbs +1 -1
  216. data/sig/openai/models/fine_tuning/job_list_params.rbs +14 -4
  217. data/sig/openai/models/graders/score_model_grader.rbs +3 -3
  218. data/sig/openai/models/image.rbs +21 -21
  219. data/sig/openai/models/image_create_variation_params.rbs +4 -4
  220. data/sig/openai/models/image_edit_params.rbs +54 -66
  221. data/sig/openai/models/image_generate_params.rbs +23 -45
  222. data/sig/openai/models/image_model.rbs +6 -6
  223. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +9 -6
  224. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +9 -6
  225. data/sig/openai/models/responses/response_computer_tool_call_output_item.rbs +2 -2
  226. data/sig/openai/models/responses/response_error.rbs +10 -0
  227. data/sig/openai/models/responses/responses_server_event.rbs +10 -0
  228. data/sig/openai/models/responses/tool.rbs +11 -15
  229. data/sig/openai/models/video_create_error.rbs +10 -0
  230. data/sig/openai/models/webhooks/agent_session_action_required_webhook_event.rbs +114 -0
  231. data/sig/openai/models/webhooks/agent_session_created_webhook_event.rbs +115 -0
  232. data/sig/openai/models/webhooks/agent_session_failed_webhook_event.rbs +89 -0
  233. data/sig/openai/models/webhooks/agent_session_idle_webhook_event.rbs +89 -0
  234. data/sig/openai/models/webhooks/agent_session_in_progress_webhook_event.rbs +89 -0
  235. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +6 -1
  236. data/sig/openai/models/webhooks/webhook_create_params.rbs +10 -0
  237. data/sig/openai/models/webhooks/webhook_test_params.rbs +10 -0
  238. data/sig/openai/models/webhooks/webhook_update_params.rbs +10 -0
  239. data/sig/openai/resources/audio/voices.rbs +14 -0
  240. data/sig/openai/resources/audio.rbs +2 -0
  241. data/sig/openai/resources/beta/agents/sessions/turns/items.rbs +24 -0
  242. data/sig/openai/resources/beta/agents/sessions/turns.rbs +2 -0
  243. data/sig/openai/resources/beta/agents/sessions.rbs +1 -0
  244. data/sig/openai/resources/webhooks.rbs +6 -1
  245. metadata +35 -1
@@ -190,6 +190,19 @@ module OpenAI
190
190
  sig { returns(T.nilable(String)) }
191
191
  attr_accessor :api_key_id
192
192
 
193
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
194
+ # activity and `unlabeled` includes all records without published source
195
+ # attribution, including historical and unknown origins. Unlabeled does not imply
196
+ # direct API usage. Without source grouping, this field is null.
197
+ sig {
198
+ returns(
199
+ T.nilable(
200
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
201
+ )
202
+ )
203
+ }
204
+ attr_accessor :api_source
205
+
193
206
  # When `group_by=batch`, this field tells whether the grouped usage result is
194
207
  # batch or not.
195
208
  sig { returns(T.nilable(T::Boolean)) }
@@ -202,7 +215,16 @@ module OpenAI
202
215
  sig { params(input_audio_tokens: Integer).void }
203
216
  attr_writer :input_audio_tokens
204
217
 
205
- # The aggregated number of input tokens written to the cache.
218
+ # The aggregated number of input tokens written to the cache with a 12-hour
219
+ # retention period.
220
+ sig { returns(T.nilable(Integer)) }
221
+ attr_reader :input_cache_write_12h_tokens
222
+
223
+ sig { params(input_cache_write_12h_tokens: Integer).void }
224
+ attr_writer :input_cache_write_12h_tokens
225
+
226
+ # The aggregated number of input tokens written to the cache with a 30-minute
227
+ # retention period.
206
228
  sig { returns(T.nilable(Integer)) }
207
229
  attr_reader :input_cache_write_tokens
208
230
 
@@ -314,10 +336,16 @@ module OpenAI
314
336
 
315
337
  api_key_id: T.nilable(String),
316
338
 
339
+ api_source: T.nilable(
340
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::OrSymbol
341
+ ),
342
+
317
343
  batch: T.nilable(T::Boolean),
318
344
 
319
345
  input_audio_tokens: Integer,
320
346
 
347
+ input_cache_write_12h_tokens: Integer,
348
+
321
349
  input_cache_write_tokens: Integer,
322
350
 
323
351
  input_cached_audio_tokens: Integer,
@@ -371,6 +399,12 @@ module OpenAI
371
399
  # usage result.
372
400
  api_key_id: nil,
373
401
 
402
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
403
+ # activity and `unlabeled` includes all records without published source
404
+ # attribution, including historical and unknown origins. Unlabeled does not imply
405
+ # direct API usage. Without source grouping, this field is null.
406
+ api_source: nil,
407
+
374
408
  # When `group_by=batch`, this field tells whether the grouped usage result is
375
409
  # batch or not.
376
410
  batch: nil,
@@ -378,7 +412,12 @@ module OpenAI
378
412
  # The aggregated number of uncached audio input tokens used.
379
413
  input_audio_tokens: nil,
380
414
 
381
- # The aggregated number of input tokens written to the cache.
415
+ # The aggregated number of input tokens written to the cache with a 12-hour
416
+ # retention period.
417
+ input_cache_write_12h_tokens: nil,
418
+
419
+ # The aggregated number of input tokens written to the cache with a 30-minute
420
+ # retention period.
382
421
  input_cache_write_tokens: nil,
383
422
 
384
423
  # The aggregated number of cached audio input tokens used.
@@ -442,8 +481,12 @@ module OpenAI
442
481
  object: Symbol,
443
482
  output_tokens: Integer,
444
483
  api_key_id: T.nilable(String),
484
+ api_source: T.nilable(
485
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
486
+ ),
445
487
  batch: T.nilable(T::Boolean),
446
488
  input_audio_tokens: Integer,
489
+ input_cache_write_12h_tokens: Integer,
447
490
  input_cache_write_tokens: Integer,
448
491
  input_cached_audio_tokens: Integer,
449
492
  input_cached_image_tokens: Integer,
@@ -465,6 +508,40 @@ module OpenAI
465
508
  def to_hash
466
509
  end
467
510
 
511
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
512
+ # activity and `unlabeled` includes all records without published source
513
+ # attribution, including historical and unknown origins. Unlabeled does not imply
514
+ # direct API usage. Without source grouping, this field is null.
515
+ module APISource
516
+ extend OpenAI::Internal::Type::Enum
517
+
518
+ TaggedSymbol = T.type_alias {
519
+ T.all(
520
+ Symbol,
521
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource
522
+ )
523
+ }
524
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
525
+
526
+ AGENTS_API = T.let(
527
+ :agents_api,
528
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
529
+ )
530
+ UNLABELED = T.let(
531
+ :unlabeled,
532
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
533
+ )
534
+
535
+ sig {
536
+ override.returns(
537
+ T::Array[
538
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
539
+ ]
540
+ )
541
+ }
542
+ def self.values
543
+ end
544
+ end
468
545
  end
469
546
 
470
547
  class OrganizationUsageEmbeddingsResult < OpenAI::Internal::Type::BaseModel
@@ -1246,6 +1323,19 @@ module OpenAI
1246
1323
  sig { returns(T.nilable(String)) }
1247
1324
  attr_accessor :api_key_id
1248
1325
 
1326
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1327
+ # activity and `unlabeled` includes all records without published source
1328
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1329
+ # direct API usage. Without source grouping, this field is null.
1330
+ sig {
1331
+ returns(
1332
+ T.nilable(
1333
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1334
+ )
1335
+ )
1336
+ }
1337
+ attr_accessor :api_source
1338
+
1249
1339
  # When `group_by=context_level`, this field provides the search context size of
1250
1340
  # the grouped usage result.
1251
1341
  sig { returns(T.nilable(String)) }
@@ -1276,6 +1366,10 @@ module OpenAI
1276
1366
 
1277
1367
  api_key_id: T.nilable(String),
1278
1368
 
1369
+ api_source: T.nilable(
1370
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::OrSymbol
1371
+ ),
1372
+
1279
1373
  context_level: T.nilable(String),
1280
1374
 
1281
1375
  model: T.nilable(String),
@@ -1300,6 +1394,12 @@ module OpenAI
1300
1394
  # usage result.
1301
1395
  api_key_id: nil,
1302
1396
 
1397
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1398
+ # activity and `unlabeled` includes all records without published source
1399
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1400
+ # direct API usage. Without source grouping, this field is null.
1401
+ api_source: nil,
1402
+
1303
1403
  # When `group_by=context_level`, this field provides the search context size of
1304
1404
  # the grouped usage result.
1305
1405
  context_level: nil,
@@ -1327,6 +1427,9 @@ module OpenAI
1327
1427
  num_requests: Integer,
1328
1428
  object: Symbol,
1329
1429
  api_key_id: T.nilable(String),
1430
+ api_source: T.nilable(
1431
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1432
+ ),
1330
1433
  context_level: T.nilable(String),
1331
1434
  model: T.nilable(String),
1332
1435
  project_id: T.nilable(String),
@@ -1337,6 +1440,40 @@ module OpenAI
1337
1440
  def to_hash
1338
1441
  end
1339
1442
 
1443
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1444
+ # activity and `unlabeled` includes all records without published source
1445
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1446
+ # direct API usage. Without source grouping, this field is null.
1447
+ module APISource
1448
+ extend OpenAI::Internal::Type::Enum
1449
+
1450
+ TaggedSymbol = T.type_alias {
1451
+ T.all(
1452
+ Symbol,
1453
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource
1454
+ )
1455
+ }
1456
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1457
+
1458
+ AGENTS_API = T.let(
1459
+ :agents_api,
1460
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1461
+ )
1462
+ UNLABELED = T.let(
1463
+ :unlabeled,
1464
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1465
+ )
1466
+
1467
+ sig {
1468
+ override.returns(
1469
+ T::Array[
1470
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1471
+ ]
1472
+ )
1473
+ }
1474
+ def self.values
1475
+ end
1476
+ end
1340
1477
  end
1341
1478
 
1342
1479
  class OrganizationCostsResult < OpenAI::Internal::Type::BaseModel
@@ -1373,6 +1510,19 @@ module OpenAI
1373
1510
  sig { returns(T.nilable(String)) }
1374
1511
  attr_accessor :api_key_id
1375
1512
 
1513
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1514
+ # activity and `unlabeled` includes all records without published source
1515
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1516
+ # direct API usage. Without source grouping, this field is null.
1517
+ sig {
1518
+ returns(
1519
+ T.nilable(
1520
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1521
+ )
1522
+ )
1523
+ }
1524
+ attr_accessor :api_source
1525
+
1376
1526
  # When `group_by=line_item`, this field provides the line item of the grouped
1377
1527
  # costs result.
1378
1528
  sig { returns(T.nilable(String)) }
@@ -1393,6 +1543,11 @@ module OpenAI
1393
1543
  sig { returns(T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol))) }
1394
1544
  attr_accessor :quantity_unit
1395
1545
 
1546
+ # When `group_by=user_id`, this field provides the user ID of the grouped costs
1547
+ # result.
1548
+ sig { returns(T.nilable(String)) }
1549
+ attr_accessor :user_id
1550
+
1396
1551
  # The aggregated costs details of the specific time bucket.
1397
1552
  sig do
1398
1553
  params(
@@ -1401,6 +1556,10 @@ module OpenAI
1401
1556
 
1402
1557
  api_key_id: T.nilable(String),
1403
1558
 
1559
+ api_source: T.nilable(
1560
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationCostsResult::APISource::OrSymbol
1561
+ ),
1562
+
1404
1563
  line_item: T.nilable(String),
1405
1564
 
1406
1565
  project_id: T.nilable(String),
@@ -1409,6 +1568,8 @@ module OpenAI
1409
1568
 
1410
1569
  quantity_unit: T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol)),
1411
1570
 
1571
+ user_id: T.nilable(String),
1572
+
1412
1573
  object: Symbol
1413
1574
  )
1414
1575
  .returns(T.attached_class)
@@ -1422,6 +1583,12 @@ module OpenAI
1422
1583
  # costs result.
1423
1584
  api_key_id: nil,
1424
1585
 
1586
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1587
+ # activity and `unlabeled` includes all records without published source
1588
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1589
+ # direct API usage. Without source grouping, this field is null.
1590
+ api_source: nil,
1591
+
1425
1592
  # When `group_by=line_item`, this field provides the line item of the grouped
1426
1593
  # costs result.
1427
1594
  line_item: nil,
@@ -1438,6 +1605,10 @@ module OpenAI
1438
1605
  # result, this field is `null`.
1439
1606
  quantity_unit: nil,
1440
1607
 
1608
+ # When `group_by=user_id`, this field provides the user ID of the grouped costs
1609
+ # result.
1610
+ user_id: nil,
1611
+
1441
1612
  object: :"organization.costs.result"
1442
1613
  )
1443
1614
  end
@@ -1448,10 +1619,14 @@ module OpenAI
1448
1619
  object: Symbol,
1449
1620
  amount: OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationCostsResult::Amount,
1450
1621
  api_key_id: T.nilable(String),
1622
+ api_source: T.nilable(
1623
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1624
+ ),
1451
1625
  line_item: T.nilable(String),
1452
1626
  project_id: T.nilable(String),
1453
1627
  quantity: T.nilable(Float),
1454
- quantity_unit: T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol))
1628
+ quantity_unit: T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol)),
1629
+ user_id: T.nilable(String)
1455
1630
  }
1456
1631
  )
1457
1632
  end
@@ -1510,6 +1685,41 @@ module OpenAI
1510
1685
  end
1511
1686
 
1512
1687
  end
1688
+
1689
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1690
+ # activity and `unlabeled` includes all records without published source
1691
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1692
+ # direct API usage. Without source grouping, this field is null.
1693
+ module APISource
1694
+ extend OpenAI::Internal::Type::Enum
1695
+
1696
+ TaggedSymbol = T.type_alias {
1697
+ T.all(
1698
+ Symbol,
1699
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationCostsResult::APISource
1700
+ )
1701
+ }
1702
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1703
+
1704
+ AGENTS_API = T.let(
1705
+ :agents_api,
1706
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1707
+ )
1708
+ UNLABELED = T.let(
1709
+ :unlabeled,
1710
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1711
+ )
1712
+
1713
+ sig {
1714
+ override.returns(
1715
+ T::Array[
1716
+ OpenAI::Models::Admin::Organization::UsageCostsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1717
+ ]
1718
+ )
1719
+ }
1720
+ def self.values
1721
+ end
1722
+ end
1513
1723
  end
1514
1724
 
1515
1725
  sig {