openai 0.99.0 → 0.101.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 (195) 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 +13 -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 +125 -3
  13. data/lib/openai/models/admin/organization/usage_audio_transcriptions_response.rb +125 -3
  14. data/lib/openai/models/admin/organization/usage_code_interpreter_sessions_response.rb +125 -3
  15. data/lib/openai/models/admin/organization/usage_completions_params.rb +9 -4
  16. data/lib/openai/models/admin/organization/usage_completions_response.rb +125 -3
  17. data/lib/openai/models/admin/organization/usage_costs_params.rb +16 -4
  18. data/lib/openai/models/admin/organization/usage_costs_response.rb +125 -3
  19. data/lib/openai/models/admin/organization/usage_embeddings_response.rb +125 -3
  20. data/lib/openai/models/admin/organization/usage_file_search_calls_response.rb +125 -3
  21. data/lib/openai/models/admin/organization/usage_images_response.rb +125 -3
  22. data/lib/openai/models/admin/organization/usage_moderations_response.rb +125 -3
  23. data/lib/openai/models/admin/organization/usage_vector_stores_response.rb +125 -3
  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 +125 -3
  26. data/lib/openai/models/beta/agents/environments/template_create_params.rb +6 -6
  27. data/lib/openai/models/beta/agents/environments/template_update_params.rb +3 -6
  28. data/lib/openai/models/beta/agents/sessions/turns/item_list_params.rb +79 -0
  29. data/lib/openai/models/beta/beta_response_computer_tool_call_output_item.rb +2 -2
  30. data/lib/openai/models/beta/beta_response_error.rb +12 -1
  31. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +1166 -3
  32. data/lib/openai/models/beta/beta_responses_server_event.rb +12 -1
  33. data/lib/openai/models/beta/beta_tool.rb +12 -9
  34. data/lib/openai/models/beta/beta_tool_search_output_namespace_tool.rb +176 -0
  35. data/lib/openai/models/beta/environment_param.rb +6 -6
  36. data/lib/openai/models/beta/session_turn_error.rb +9 -0
  37. data/lib/openai/models/chat/chat_completion_chunk.rb +85 -18
  38. data/lib/openai/models/decision.rb +313 -0
  39. data/lib/openai/models/decision_create_params.rb +233 -0
  40. data/lib/openai/models/decision_input_image.rb +53 -0
  41. data/lib/openai/models/decision_input_message.rb +60 -0
  42. data/lib/openai/models/decision_input_part.rb +20 -0
  43. data/lib/openai/models/decision_input_text.rb +21 -0
  44. data/lib/openai/models/error_object.rb +12 -1
  45. data/lib/openai/models/eval_create_params.rb +1 -1
  46. data/lib/openai/models/eval_create_response.rb +1 -1
  47. data/lib/openai/models/eval_list_response.rb +1 -1
  48. data/lib/openai/models/eval_retrieve_response.rb +1 -1
  49. data/lib/openai/models/eval_update_response.rb +1 -1
  50. data/lib/openai/models/fine_tuning/job_list_params.rb +14 -4
  51. data/lib/openai/models/graders/score_model_grader.rb +2 -2
  52. data/lib/openai/models/image_edit_params.rb +12 -9
  53. data/lib/openai/models/realtime/realtime_client_event.rb +9 -0
  54. data/lib/openai/models/realtime/session_update_event.rb +16 -0
  55. data/lib/openai/models/responses/response_computer_tool_call_output_item.rb +2 -2
  56. data/lib/openai/models/responses/response_error.rb +12 -1
  57. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +1166 -3
  58. data/lib/openai/models/responses/responses_server_event.rb +12 -1
  59. data/lib/openai/models/responses/tool.rb +12 -9
  60. data/lib/openai/models/responses/tool_search_output_namespace_tool.rb +174 -0
  61. data/lib/openai/models/video_create_error.rb +12 -1
  62. data/lib/openai/models.rb +12 -0
  63. data/lib/openai/providers/bedrock.rb +20 -1
  64. data/lib/openai/resources/admin/organization/usage.rb +15 -6
  65. data/lib/openai/resources/beta/agents/environments/templates.rb +3 -4
  66. data/lib/openai/resources/beta/agents/sessions/turns/items.rb +68 -0
  67. data/lib/openai/resources/beta/agents/sessions/turns.rb +4 -0
  68. data/lib/openai/resources/beta/agents/sessions.rb +22 -2
  69. data/lib/openai/resources/decisions.rb +59 -0
  70. data/lib/openai/resources/fine_tuning/jobs.rb +7 -2
  71. data/lib/openai/resources/images.rb +8 -6
  72. data/lib/openai/version.rb +1 -1
  73. data/lib/openai.rb +11 -0
  74. data/rbi/openai/client.rbi +3 -0
  75. data/rbi/openai/helpers/agents.rbi +2 -0
  76. data/rbi/openai/helpers/beta/agents/function_tool.rbi +8 -3
  77. data/rbi/openai/helpers/beta/agents/tool_error.rbi +19 -0
  78. data/rbi/openai/helpers/beta/agents.rbi +12 -0
  79. data/rbi/openai/models/admin/organization/usage_audio_speeches_response.rbi +194 -1
  80. data/rbi/openai/models/admin/organization/usage_audio_transcriptions_response.rbi +194 -1
  81. data/rbi/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbi +194 -1
  82. data/rbi/openai/models/admin/organization/usage_completions_params.rbi +9 -4
  83. data/rbi/openai/models/admin/organization/usage_completions_response.rbi +194 -1
  84. data/rbi/openai/models/admin/organization/usage_costs_params.rbi +16 -4
  85. data/rbi/openai/models/admin/organization/usage_costs_response.rbi +194 -1
  86. data/rbi/openai/models/admin/organization/usage_embeddings_response.rbi +194 -1
  87. data/rbi/openai/models/admin/organization/usage_file_search_calls_response.rbi +194 -1
  88. data/rbi/openai/models/admin/organization/usage_images_response.rbi +194 -1
  89. data/rbi/openai/models/admin/organization/usage_moderations_response.rbi +194 -1
  90. data/rbi/openai/models/admin/organization/usage_vector_stores_response.rbi +194 -1
  91. data/rbi/openai/models/admin/organization/usage_web_search_calls_params.rbi +12 -4
  92. data/rbi/openai/models/admin/organization/usage_web_search_calls_response.rbi +194 -1
  93. data/rbi/openai/models/beta/agents/environments/template_create_params.rbi +6 -6
  94. data/rbi/openai/models/beta/agents/environments/template_update_params.rbi +3 -6
  95. data/rbi/openai/models/beta/agents/sessions/turns/item_list_params.rbi +139 -0
  96. data/rbi/openai/models/beta/beta_response_computer_tool_call_output_item.rbi +2 -2
  97. data/rbi/openai/models/beta/beta_response_error.rbi +12 -0
  98. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +1893 -18
  99. data/rbi/openai/models/beta/beta_responses_server_event.rbi +12 -0
  100. data/rbi/openai/models/beta/beta_tool.rbi +12 -9
  101. data/rbi/openai/models/beta/beta_tool_search_output_namespace_tool.rbi +272 -0
  102. data/rbi/openai/models/beta/environment_param.rbi +6 -6
  103. data/rbi/openai/models/beta/session_turn_error.rbi +18 -0
  104. data/rbi/openai/models/chat/chat_completion_chunk.rbi +123 -17
  105. data/rbi/openai/models/decision.rbi +586 -0
  106. data/rbi/openai/models/decision_create_params.rbi +435 -0
  107. data/rbi/openai/models/decision_input_image.rbi +81 -0
  108. data/rbi/openai/models/decision_input_message.rbi +96 -0
  109. data/rbi/openai/models/decision_input_part.rbi +24 -0
  110. data/rbi/openai/models/decision_input_text.rbi +49 -0
  111. data/rbi/openai/models/error_object.rbi +12 -0
  112. data/rbi/openai/models/eval_create_params.rbi +1 -1
  113. data/rbi/openai/models/eval_create_response.rbi +1 -1
  114. data/rbi/openai/models/eval_list_response.rbi +1 -1
  115. data/rbi/openai/models/eval_retrieve_response.rbi +1 -1
  116. data/rbi/openai/models/eval_update_response.rbi +1 -1
  117. data/rbi/openai/models/fine_tuning/job_list_params.rbi +14 -4
  118. data/rbi/openai/models/graders/score_model_grader.rbi +2 -2
  119. data/rbi/openai/models/image_edit_params.rbi +12 -9
  120. data/rbi/openai/models/realtime/session_update_event.rbi +16 -0
  121. data/rbi/openai/models/responses/response_computer_tool_call_output_item.rbi +2 -2
  122. data/rbi/openai/models/responses/response_error.rbi +12 -0
  123. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +1901 -18
  124. data/rbi/openai/models/responses/responses_server_event.rbi +12 -0
  125. data/rbi/openai/models/responses/tool.rbi +12 -9
  126. data/rbi/openai/models/responses/tool_search_output_namespace_tool.rbi +272 -0
  127. data/rbi/openai/models/video_create_error.rbi +12 -0
  128. data/rbi/openai/models.rbi +12 -0
  129. data/rbi/openai/resources/admin/organization/usage.rbi +15 -6
  130. data/rbi/openai/resources/beta/agents/environments/templates.rbi +3 -4
  131. data/rbi/openai/resources/beta/agents/sessions/turns/items.rbi +62 -0
  132. data/rbi/openai/resources/beta/agents/sessions/turns.rbi +3 -0
  133. data/rbi/openai/resources/beta/agents/sessions.rbi +2 -0
  134. data/rbi/openai/resources/decisions.rbi +57 -0
  135. data/rbi/openai/resources/fine_tuning/jobs.rbi +7 -2
  136. data/rbi/openai/resources/images.rbi +8 -6
  137. data/sig/openai/client.rbs +2 -0
  138. data/sig/openai/helpers/agents.rbs +3 -0
  139. data/sig/openai/helpers/beta/agents/function_tool.rbs +5 -2
  140. data/sig/openai/helpers/beta/agents/tool_error.rbs +17 -0
  141. data/sig/openai/helpers/beta/agents.rbs +5 -0
  142. data/sig/openai/models/admin/organization/usage_audio_speeches_response.rbs +87 -2
  143. data/sig/openai/models/admin/organization/usage_audio_transcriptions_response.rbs +87 -2
  144. data/sig/openai/models/admin/organization/usage_code_interpreter_sessions_response.rbs +87 -2
  145. data/sig/openai/models/admin/organization/usage_completions_params.rbs +14 -6
  146. data/sig/openai/models/admin/organization/usage_completions_response.rbs +87 -2
  147. data/sig/openai/models/admin/organization/usage_costs_params.rbs +25 -7
  148. data/sig/openai/models/admin/organization/usage_costs_response.rbs +87 -2
  149. data/sig/openai/models/admin/organization/usage_embeddings_response.rbs +87 -2
  150. data/sig/openai/models/admin/organization/usage_file_search_calls_response.rbs +87 -2
  151. data/sig/openai/models/admin/organization/usage_images_response.rbs +87 -2
  152. data/sig/openai/models/admin/organization/usage_moderations_response.rbs +87 -2
  153. data/sig/openai/models/admin/organization/usage_vector_stores_response.rbs +87 -2
  154. data/sig/openai/models/admin/organization/usage_web_search_calls_params.rbs +19 -7
  155. data/sig/openai/models/admin/organization/usage_web_search_calls_response.rbs +87 -2
  156. data/sig/openai/models/beta/agents/environments/template_create_params.rbs +4 -4
  157. data/sig/openai/models/beta/agents/environments/template_update_params.rbs +2 -4
  158. data/sig/openai/models/beta/agents/sessions/turns/item_list_params.rbs +91 -0
  159. data/sig/openai/models/beta/beta_response_computer_tool_call_output_item.rbs +2 -2
  160. data/sig/openai/models/beta/beta_response_error.rbs +10 -0
  161. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +993 -4
  162. data/sig/openai/models/beta/beta_responses_server_event.rbs +10 -0
  163. data/sig/openai/models/beta/beta_tool.rbs +8 -6
  164. data/sig/openai/models/beta/beta_tool_search_output_namespace_tool.rbs +162 -0
  165. data/sig/openai/models/beta/environment_param.rbs +4 -4
  166. data/sig/openai/models/beta/session_turn_error.rbs +12 -0
  167. data/sig/openai/models/chat/chat_completion_chunk.rbs +96 -12
  168. data/sig/openai/models/decision.rbs +296 -0
  169. data/sig/openai/models/decision_create_params.rbs +227 -0
  170. data/sig/openai/models/decision_input_image.rbs +51 -0
  171. data/sig/openai/models/decision_input_message.rbs +57 -0
  172. data/sig/openai/models/decision_input_part.rbs +12 -0
  173. data/sig/openai/models/decision_input_text.rbs +15 -0
  174. data/sig/openai/models/error_object.rbs +10 -0
  175. data/sig/openai/models/eval_create_params.rbs +1 -1
  176. data/sig/openai/models/eval_create_response.rbs +1 -1
  177. data/sig/openai/models/eval_list_response.rbs +1 -1
  178. data/sig/openai/models/eval_retrieve_response.rbs +1 -1
  179. data/sig/openai/models/eval_update_response.rbs +1 -1
  180. data/sig/openai/models/fine_tuning/job_list_params.rbs +14 -4
  181. data/sig/openai/models/graders/score_model_grader.rbs +3 -3
  182. data/sig/openai/models/image_edit_params.rbs +8 -6
  183. data/sig/openai/models/responses/response_computer_tool_call_output_item.rbs +2 -2
  184. data/sig/openai/models/responses/response_error.rbs +10 -0
  185. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +993 -4
  186. data/sig/openai/models/responses/responses_server_event.rbs +10 -0
  187. data/sig/openai/models/responses/tool.rbs +8 -6
  188. data/sig/openai/models/responses/tool_search_output_namespace_tool.rbs +160 -0
  189. data/sig/openai/models/video_create_error.rbs +10 -0
  190. data/sig/openai/models.rbs +12 -0
  191. data/sig/openai/resources/beta/agents/sessions/turns/items.rbs +24 -0
  192. data/sig/openai/resources/beta/agents/sessions/turns.rbs +2 -0
  193. data/sig/openai/resources/beta/agents/sessions.rbs +1 -0
  194. data/sig/openai/resources/decisions.rbs +15 -0
  195. metadata +38 -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::UsageImagesResponse::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)) }
@@ -323,6 +336,10 @@ module OpenAI
323
336
 
324
337
  api_key_id: T.nilable(String),
325
338
 
339
+ api_source: T.nilable(
340
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::OrSymbol
341
+ ),
342
+
326
343
  batch: T.nilable(T::Boolean),
327
344
 
328
345
  input_audio_tokens: Integer,
@@ -382,6 +399,12 @@ module OpenAI
382
399
  # usage result.
383
400
  api_key_id: nil,
384
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
+
385
408
  # When `group_by=batch`, this field tells whether the grouped usage result is
386
409
  # batch or not.
387
410
  batch: nil,
@@ -458,6 +481,9 @@ module OpenAI
458
481
  object: Symbol,
459
482
  output_tokens: Integer,
460
483
  api_key_id: T.nilable(String),
484
+ api_source: T.nilable(
485
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
486
+ ),
461
487
  batch: T.nilable(T::Boolean),
462
488
  input_audio_tokens: Integer,
463
489
  input_cache_write_12h_tokens: Integer,
@@ -482,6 +508,40 @@ module OpenAI
482
508
  def to_hash
483
509
  end
484
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::UsageImagesResponse::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::UsageImagesResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
529
+ )
530
+ UNLABELED = T.let(
531
+ :unlabeled,
532
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
533
+ )
534
+
535
+ sig {
536
+ override.returns(
537
+ T::Array[
538
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
539
+ ]
540
+ )
541
+ }
542
+ def self.values
543
+ end
544
+ end
485
545
  end
486
546
 
487
547
  class OrganizationUsageEmbeddingsResult < OpenAI::Internal::Type::BaseModel
@@ -1263,6 +1323,19 @@ module OpenAI
1263
1323
  sig { returns(T.nilable(String)) }
1264
1324
  attr_accessor :api_key_id
1265
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::UsageImagesResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1334
+ )
1335
+ )
1336
+ }
1337
+ attr_accessor :api_source
1338
+
1266
1339
  # When `group_by=context_level`, this field provides the search context size of
1267
1340
  # the grouped usage result.
1268
1341
  sig { returns(T.nilable(String)) }
@@ -1293,6 +1366,10 @@ module OpenAI
1293
1366
 
1294
1367
  api_key_id: T.nilable(String),
1295
1368
 
1369
+ api_source: T.nilable(
1370
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::OrSymbol
1371
+ ),
1372
+
1296
1373
  context_level: T.nilable(String),
1297
1374
 
1298
1375
  model: T.nilable(String),
@@ -1317,6 +1394,12 @@ module OpenAI
1317
1394
  # usage result.
1318
1395
  api_key_id: nil,
1319
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
+
1320
1403
  # When `group_by=context_level`, this field provides the search context size of
1321
1404
  # the grouped usage result.
1322
1405
  context_level: nil,
@@ -1344,6 +1427,9 @@ module OpenAI
1344
1427
  num_requests: Integer,
1345
1428
  object: Symbol,
1346
1429
  api_key_id: T.nilable(String),
1430
+ api_source: T.nilable(
1431
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1432
+ ),
1347
1433
  context_level: T.nilable(String),
1348
1434
  model: T.nilable(String),
1349
1435
  project_id: T.nilable(String),
@@ -1354,6 +1440,40 @@ module OpenAI
1354
1440
  def to_hash
1355
1441
  end
1356
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::UsageImagesResponse::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::UsageImagesResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1461
+ )
1462
+ UNLABELED = T.let(
1463
+ :unlabeled,
1464
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1465
+ )
1466
+
1467
+ sig {
1468
+ override.returns(
1469
+ T::Array[
1470
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1471
+ ]
1472
+ )
1473
+ }
1474
+ def self.values
1475
+ end
1476
+ end
1357
1477
  end
1358
1478
 
1359
1479
  class OrganizationCostsResult < OpenAI::Internal::Type::BaseModel
@@ -1390,6 +1510,19 @@ module OpenAI
1390
1510
  sig { returns(T.nilable(String)) }
1391
1511
  attr_accessor :api_key_id
1392
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::UsageImagesResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1521
+ )
1522
+ )
1523
+ }
1524
+ attr_accessor :api_source
1525
+
1393
1526
  # When `group_by=line_item`, this field provides the line item of the grouped
1394
1527
  # costs result.
1395
1528
  sig { returns(T.nilable(String)) }
@@ -1410,6 +1543,11 @@ module OpenAI
1410
1543
  sig { returns(T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol))) }
1411
1544
  attr_accessor :quantity_unit
1412
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
+
1413
1551
  # The aggregated costs details of the specific time bucket.
1414
1552
  sig do
1415
1553
  params(
@@ -1418,6 +1556,10 @@ module OpenAI
1418
1556
 
1419
1557
  api_key_id: T.nilable(String),
1420
1558
 
1559
+ api_source: T.nilable(
1560
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationCostsResult::APISource::OrSymbol
1561
+ ),
1562
+
1421
1563
  line_item: T.nilable(String),
1422
1564
 
1423
1565
  project_id: T.nilable(String),
@@ -1426,6 +1568,8 @@ module OpenAI
1426
1568
 
1427
1569
  quantity_unit: T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol)),
1428
1570
 
1571
+ user_id: T.nilable(String),
1572
+
1429
1573
  object: Symbol
1430
1574
  )
1431
1575
  .returns(T.attached_class)
@@ -1439,6 +1583,12 @@ module OpenAI
1439
1583
  # costs result.
1440
1584
  api_key_id: nil,
1441
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
+
1442
1592
  # When `group_by=line_item`, this field provides the line item of the grouped
1443
1593
  # costs result.
1444
1594
  line_item: nil,
@@ -1455,6 +1605,10 @@ module OpenAI
1455
1605
  # result, this field is `null`.
1456
1606
  quantity_unit: nil,
1457
1607
 
1608
+ # When `group_by=user_id`, this field provides the user ID of the grouped costs
1609
+ # result.
1610
+ user_id: nil,
1611
+
1458
1612
  object: :"organization.costs.result"
1459
1613
  )
1460
1614
  end
@@ -1465,10 +1619,14 @@ module OpenAI
1465
1619
  object: Symbol,
1466
1620
  amount: OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationCostsResult::Amount,
1467
1621
  api_key_id: T.nilable(String),
1622
+ api_source: T.nilable(
1623
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1624
+ ),
1468
1625
  line_item: T.nilable(String),
1469
1626
  project_id: T.nilable(String),
1470
1627
  quantity: T.nilable(Float),
1471
- 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)
1472
1630
  }
1473
1631
  )
1474
1632
  end
@@ -1527,6 +1685,41 @@ module OpenAI
1527
1685
  end
1528
1686
 
1529
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::UsageImagesResponse::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::UsageImagesResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1707
+ )
1708
+ UNLABELED = T.let(
1709
+ :unlabeled,
1710
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1711
+ )
1712
+
1713
+ sig {
1714
+ override.returns(
1715
+ T::Array[
1716
+ OpenAI::Models::Admin::Organization::UsageImagesResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1717
+ ]
1718
+ )
1719
+ }
1720
+ def self.values
1721
+ end
1722
+ end
1530
1723
  end
1531
1724
 
1532
1725
  sig {
@@ -194,6 +194,19 @@ module OpenAI
194
194
  sig { returns(T.nilable(String)) }
195
195
  attr_accessor :api_key_id
196
196
 
197
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
198
+ # activity and `unlabeled` includes all records without published source
199
+ # attribution, including historical and unknown origins. Unlabeled does not imply
200
+ # direct API usage. Without source grouping, this field is null.
201
+ sig {
202
+ returns(
203
+ T.nilable(
204
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
205
+ )
206
+ )
207
+ }
208
+ attr_accessor :api_source
209
+
197
210
  # When `group_by=batch`, this field tells whether the grouped usage result is
198
211
  # batch or not.
199
212
  sig { returns(T.nilable(T::Boolean)) }
@@ -327,6 +340,10 @@ module OpenAI
327
340
 
328
341
  api_key_id: T.nilable(String),
329
342
 
343
+ api_source: T.nilable(
344
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::OrSymbol
345
+ ),
346
+
330
347
  batch: T.nilable(T::Boolean),
331
348
 
332
349
  input_audio_tokens: Integer,
@@ -386,6 +403,12 @@ module OpenAI
386
403
  # usage result.
387
404
  api_key_id: nil,
388
405
 
406
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
407
+ # activity and `unlabeled` includes all records without published source
408
+ # attribution, including historical and unknown origins. Unlabeled does not imply
409
+ # direct API usage. Without source grouping, this field is null.
410
+ api_source: nil,
411
+
389
412
  # When `group_by=batch`, this field tells whether the grouped usage result is
390
413
  # batch or not.
391
414
  batch: nil,
@@ -462,6 +485,9 @@ module OpenAI
462
485
  object: Symbol,
463
486
  output_tokens: Integer,
464
487
  api_key_id: T.nilable(String),
488
+ api_source: T.nilable(
489
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
490
+ ),
465
491
  batch: T.nilable(T::Boolean),
466
492
  input_audio_tokens: Integer,
467
493
  input_cache_write_12h_tokens: Integer,
@@ -486,6 +512,40 @@ module OpenAI
486
512
  def to_hash
487
513
  end
488
514
 
515
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
516
+ # activity and `unlabeled` includes all records without published source
517
+ # attribution, including historical and unknown origins. Unlabeled does not imply
518
+ # direct API usage. Without source grouping, this field is null.
519
+ module APISource
520
+ extend OpenAI::Internal::Type::Enum
521
+
522
+ TaggedSymbol = T.type_alias {
523
+ T.all(
524
+ Symbol,
525
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource
526
+ )
527
+ }
528
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
529
+
530
+ AGENTS_API = T.let(
531
+ :agents_api,
532
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
533
+ )
534
+ UNLABELED = T.let(
535
+ :unlabeled,
536
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
537
+ )
538
+
539
+ sig {
540
+ override.returns(
541
+ T::Array[
542
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageCompletionsResult::APISource::TaggedSymbol
543
+ ]
544
+ )
545
+ }
546
+ def self.values
547
+ end
548
+ end
489
549
  end
490
550
 
491
551
  class OrganizationUsageEmbeddingsResult < OpenAI::Internal::Type::BaseModel
@@ -1267,6 +1327,19 @@ module OpenAI
1267
1327
  sig { returns(T.nilable(String)) }
1268
1328
  attr_accessor :api_key_id
1269
1329
 
1330
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1331
+ # activity and `unlabeled` includes all records without published source
1332
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1333
+ # direct API usage. Without source grouping, this field is null.
1334
+ sig {
1335
+ returns(
1336
+ T.nilable(
1337
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1338
+ )
1339
+ )
1340
+ }
1341
+ attr_accessor :api_source
1342
+
1270
1343
  # When `group_by=context_level`, this field provides the search context size of
1271
1344
  # the grouped usage result.
1272
1345
  sig { returns(T.nilable(String)) }
@@ -1297,6 +1370,10 @@ module OpenAI
1297
1370
 
1298
1371
  api_key_id: T.nilable(String),
1299
1372
 
1373
+ api_source: T.nilable(
1374
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::OrSymbol
1375
+ ),
1376
+
1300
1377
  context_level: T.nilable(String),
1301
1378
 
1302
1379
  model: T.nilable(String),
@@ -1321,6 +1398,12 @@ module OpenAI
1321
1398
  # usage result.
1322
1399
  api_key_id: nil,
1323
1400
 
1401
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1402
+ # activity and `unlabeled` includes all records without published source
1403
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1404
+ # direct API usage. Without source grouping, this field is null.
1405
+ api_source: nil,
1406
+
1324
1407
  # When `group_by=context_level`, this field provides the search context size of
1325
1408
  # the grouped usage result.
1326
1409
  context_level: nil,
@@ -1348,6 +1431,9 @@ module OpenAI
1348
1431
  num_requests: Integer,
1349
1432
  object: Symbol,
1350
1433
  api_key_id: T.nilable(String),
1434
+ api_source: T.nilable(
1435
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1436
+ ),
1351
1437
  context_level: T.nilable(String),
1352
1438
  model: T.nilable(String),
1353
1439
  project_id: T.nilable(String),
@@ -1358,6 +1444,40 @@ module OpenAI
1358
1444
  def to_hash
1359
1445
  end
1360
1446
 
1447
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1448
+ # activity and `unlabeled` includes all records without published source
1449
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1450
+ # direct API usage. Without source grouping, this field is null.
1451
+ module APISource
1452
+ extend OpenAI::Internal::Type::Enum
1453
+
1454
+ TaggedSymbol = T.type_alias {
1455
+ T.all(
1456
+ Symbol,
1457
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource
1458
+ )
1459
+ }
1460
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1461
+
1462
+ AGENTS_API = T.let(
1463
+ :agents_api,
1464
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1465
+ )
1466
+ UNLABELED = T.let(
1467
+ :unlabeled,
1468
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1469
+ )
1470
+
1471
+ sig {
1472
+ override.returns(
1473
+ T::Array[
1474
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationUsageWebSearchesResult::APISource::TaggedSymbol
1475
+ ]
1476
+ )
1477
+ }
1478
+ def self.values
1479
+ end
1480
+ end
1361
1481
  end
1362
1482
 
1363
1483
  class OrganizationCostsResult < OpenAI::Internal::Type::BaseModel
@@ -1394,6 +1514,19 @@ module OpenAI
1394
1514
  sig { returns(T.nilable(String)) }
1395
1515
  attr_accessor :api_key_id
1396
1516
 
1517
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1518
+ # activity and `unlabeled` includes all records without published source
1519
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1520
+ # direct API usage. Without source grouping, this field is null.
1521
+ sig {
1522
+ returns(
1523
+ T.nilable(
1524
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1525
+ )
1526
+ )
1527
+ }
1528
+ attr_accessor :api_source
1529
+
1397
1530
  # When `group_by=line_item`, this field provides the line item of the grouped
1398
1531
  # costs result.
1399
1532
  sig { returns(T.nilable(String)) }
@@ -1414,6 +1547,11 @@ module OpenAI
1414
1547
  sig { returns(T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol))) }
1415
1548
  attr_accessor :quantity_unit
1416
1549
 
1550
+ # When `group_by=user_id`, this field provides the user ID of the grouped costs
1551
+ # result.
1552
+ sig { returns(T.nilable(String)) }
1553
+ attr_accessor :user_id
1554
+
1417
1555
  # The aggregated costs details of the specific time bucket.
1418
1556
  sig do
1419
1557
  params(
@@ -1422,6 +1560,10 @@ module OpenAI
1422
1560
 
1423
1561
  api_key_id: T.nilable(String),
1424
1562
 
1563
+ api_source: T.nilable(
1564
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationCostsResult::APISource::OrSymbol
1565
+ ),
1566
+
1425
1567
  line_item: T.nilable(String),
1426
1568
 
1427
1569
  project_id: T.nilable(String),
@@ -1430,6 +1572,8 @@ module OpenAI
1430
1572
 
1431
1573
  quantity_unit: T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol)),
1432
1574
 
1575
+ user_id: T.nilable(String),
1576
+
1433
1577
  object: Symbol
1434
1578
  )
1435
1579
  .returns(T.attached_class)
@@ -1443,6 +1587,12 @@ module OpenAI
1443
1587
  # costs result.
1444
1588
  api_key_id: nil,
1445
1589
 
1590
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1591
+ # activity and `unlabeled` includes all records without published source
1592
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1593
+ # direct API usage. Without source grouping, this field is null.
1594
+ api_source: nil,
1595
+
1446
1596
  # When `group_by=line_item`, this field provides the line item of the grouped
1447
1597
  # costs result.
1448
1598
  line_item: nil,
@@ -1459,6 +1609,10 @@ module OpenAI
1459
1609
  # result, this field is `null`.
1460
1610
  quantity_unit: nil,
1461
1611
 
1612
+ # When `group_by=user_id`, this field provides the user ID of the grouped costs
1613
+ # result.
1614
+ user_id: nil,
1615
+
1462
1616
  object: :"organization.costs.result"
1463
1617
  )
1464
1618
  end
@@ -1469,10 +1623,14 @@ module OpenAI
1469
1623
  object: Symbol,
1470
1624
  amount: OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationCostsResult::Amount,
1471
1625
  api_key_id: T.nilable(String),
1626
+ api_source: T.nilable(
1627
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1628
+ ),
1472
1629
  line_item: T.nilable(String),
1473
1630
  project_id: T.nilable(String),
1474
1631
  quantity: T.nilable(Float),
1475
- quantity_unit: T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol))
1632
+ quantity_unit: T.nilable(T.any(String, OpenAI::Admin::Organization::CostQuantityUnit::OrSymbol)),
1633
+ user_id: T.nilable(String)
1476
1634
  }
1477
1635
  )
1478
1636
  end
@@ -1531,6 +1689,41 @@ module OpenAI
1531
1689
  end
1532
1690
 
1533
1691
  end
1692
+
1693
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
1694
+ # activity and `unlabeled` includes all records without published source
1695
+ # attribution, including historical and unknown origins. Unlabeled does not imply
1696
+ # direct API usage. Without source grouping, this field is null.
1697
+ module APISource
1698
+ extend OpenAI::Internal::Type::Enum
1699
+
1700
+ TaggedSymbol = T.type_alias {
1701
+ T.all(
1702
+ Symbol,
1703
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationCostsResult::APISource
1704
+ )
1705
+ }
1706
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1707
+
1708
+ AGENTS_API = T.let(
1709
+ :agents_api,
1710
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1711
+ )
1712
+ UNLABELED = T.let(
1713
+ :unlabeled,
1714
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1715
+ )
1716
+
1717
+ sig {
1718
+ override.returns(
1719
+ T::Array[
1720
+ OpenAI::Models::Admin::Organization::UsageModerationsResponse::Data::Result::OrganizationCostsResult::APISource::TaggedSymbol
1721
+ ]
1722
+ )
1723
+ }
1724
+ def self.values
1725
+ end
1726
+ end
1534
1727
  end
1535
1728
 
1536
1729
  sig {