openai 0.103.0 → 0.105.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 (407) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +98 -0
  3. data/README.md +23 -1
  4. data/lib/openai/client.rb +3 -386
  5. data/lib/openai/helpers/admin/organization/projects/api_keys.rb +42 -0
  6. data/lib/openai/helpers/agents/session_stream_resource.rb +60 -0
  7. data/lib/openai/helpers/beta/agents/artifacts.rb +18 -0
  8. data/lib/openai/helpers/beta/agents/files.rb +41 -0
  9. data/lib/openai/helpers/client_runtime.rb +391 -0
  10. data/lib/openai/helpers/files.rb +47 -0
  11. data/lib/openai/helpers/live/websocket.rb +8 -57
  12. data/lib/openai/helpers/models/chat/parsed.rb +32 -0
  13. data/lib/openai/helpers/models/responses/parsed.rb +30 -0
  14. data/lib/openai/helpers/models/responses/response.rb +32 -0
  15. data/lib/openai/helpers/models/webhooks/webhook_endpoint_with_secret.rb +20 -0
  16. data/lib/openai/helpers/realtime/client_extension.rb +1 -2
  17. data/lib/openai/helpers/realtime/connection_manager.rb +1 -1
  18. data/lib/openai/helpers/realtime/translation.rb +7 -50
  19. data/lib/openai/helpers/responses_websocket/client_extension.rb +1 -2
  20. data/lib/openai/helpers/streaming/chat_completion_resource.rb +36 -0
  21. data/lib/openai/helpers/streaming/response_stream.rb +1 -16
  22. data/lib/openai/helpers/streaming/response_stream_resource.rb +78 -0
  23. data/lib/openai/helpers/vector_stores/file_batches.rb +188 -0
  24. data/lib/openai/helpers/vector_stores/files.rb +198 -0
  25. data/lib/openai/helpers/websocket/client_request.rb +31 -6
  26. data/lib/openai/helpers/websocket/connection.rb +58 -0
  27. data/lib/openai/helpers/websocket/connection_manager.rb +4 -2
  28. data/lib/openai/helpers/websocket/protocol.rb +2 -1
  29. data/lib/openai/helpers/websocket/resource.rb +54 -0
  30. data/lib/openai/helpers/websocket/typed_connection.rb +95 -0
  31. data/lib/openai/helpers/websocket.rb +4 -0
  32. data/lib/openai/models/admin/organization/audit_log_list_response.rb +5 -3
  33. data/lib/openai/models/admin/organization/external_storage_configuration.rb +5 -3
  34. data/lib/openai/models/admin/organization/external_storage_create_params.rb +33 -3
  35. data/lib/openai/models/admin/organization/oci_external_storage_provider.rb +37 -0
  36. data/lib/openai/models/admin/organization/project_residency.rb +3 -0
  37. data/lib/openai/models/admin/organization/projects/api_key_update_params.rb +64 -0
  38. data/lib/openai/models/admin/organization/projects/api_key_update_scopes_params.rb +34 -0
  39. data/lib/openai/models/admin/organization/usage_decisions_params.rb +177 -0
  40. data/lib/openai/models/admin/organization/usage_decisions_response.rb +351 -0
  41. data/lib/openai/models/audio/speech_create_params.rb +6 -3
  42. data/lib/openai/models/audio/translation_create_response.rb +0 -1
  43. data/lib/openai/models/audio/voice.rb +17 -2
  44. data/lib/openai/models/audio/voice_create_params.rb +100 -3
  45. data/lib/openai/models/beta/agent_create_params.rb +4 -2
  46. data/lib/openai/models/beta/agent_list_params.rb +4 -4
  47. data/lib/openai/models/beta/agent_session.rb +37 -1
  48. data/lib/openai/models/beta/agent_update_params.rb +4 -2
  49. data/lib/openai/models/beta/agents/environment_list_params.rb +7 -7
  50. data/lib/openai/models/beta/agents/session_create_params.rb +39 -3
  51. data/lib/openai/models/beta/agents/session_list_params.rb +7 -10
  52. data/lib/openai/models/beta/agents/session_update_params.rb +33 -1
  53. data/lib/openai/models/beta/agents/sessions/artifact_list_params.rb +11 -11
  54. data/lib/openai/models/beta/agents/vault_list_params.rb +23 -13
  55. data/lib/openai/models/beta/agents/vault_status_filter.rb +1 -3
  56. data/lib/openai/models/beta/agents/vault_update_params.rb +47 -0
  57. data/lib/openai/models/beta/agents/vaults/credential_list_params.rb +23 -13
  58. data/lib/openai/models/beta/beta_response.rb +23 -2
  59. data/lib/openai/models/beta/beta_response_error.rb +19 -1
  60. data/lib/openai/models/beta/beta_response_input_item.rb +107 -1
  61. data/lib/openai/models/beta/beta_response_item.rb +107 -1
  62. data/lib/openai/models/beta/beta_response_output_item.rb +107 -1
  63. data/lib/openai/models/beta/beta_responses_client_event.rb +23 -2
  64. data/lib/openai/models/beta/response_compact_params.rb +21 -0
  65. data/lib/openai/models/beta/response_create_params.rb +23 -2
  66. data/lib/openai/models/beta/session_turn_error.rb +3 -0
  67. data/lib/openai/models/chat/chat_completion_audio_param.rb +3 -3
  68. data/lib/openai/models/chat/chat_completion_message.rb +0 -8
  69. data/lib/openai/models/chat/chat_completion_message_function_tool_call.rb +0 -8
  70. data/lib/openai/models/chat/completion_create_params.rb +5 -12
  71. data/lib/openai/models/chat_model.rb +21 -0
  72. data/lib/openai/models/conversations/conversation_item.rb +107 -1
  73. data/lib/openai/models/decision.rb +17 -2
  74. data/lib/openai/models/decision_create_params.rb +29 -12
  75. data/lib/openai/models/decision_input_image.rb +4 -3
  76. data/lib/openai/models/decision_input_message.rb +4 -4
  77. data/lib/openai/models/decision_input_part.rb +3 -2
  78. data/lib/openai/models/image_edit_completed_event.rb +15 -3
  79. data/lib/openai/models/image_edit_params.rb +28 -5
  80. data/lib/openai/models/image_edit_partial_image_event.rb +1 -2
  81. data/lib/openai/models/image_gen_completed_event.rb +15 -3
  82. data/lib/openai/models/image_gen_partial_image_event.rb +1 -2
  83. data/lib/openai/models/image_generate_params.rb +28 -5
  84. data/lib/openai/models/images_response.rb +15 -3
  85. data/lib/openai/models/live/built_in_voice.rb +1 -0
  86. data/lib/openai/models/live/client_event.rb +14 -2
  87. data/lib/openai/models/live/decision_create_event.rb +26 -0
  88. data/lib/openai/models/live/decision_event.rb +117 -0
  89. data/lib/openai/models/live/decision_item_create_event.rb +194 -0
  90. data/lib/openai/models/live/decision_item_created_event.rb +202 -0
  91. data/lib/openai/models/live/decision_item_delete_event.rb +38 -0
  92. data/lib/openai/models/live/decision_item_deleted_event.rb +46 -0
  93. data/lib/openai/models/live/decision_trigger.rb +244 -0
  94. data/lib/openai/models/live/decisions_delegation_config.rb +201 -0
  95. data/lib/openai/models/live/decisions_delegation_update_config.rb +208 -0
  96. data/lib/openai/models/live/delegation_created_event.rb +10 -10
  97. data/lib/openai/models/live/fork_client_event.rb +14 -2
  98. data/lib/openai/models/live/fork_server_event.rb +17 -2
  99. data/lib/openai/models/live/media_session_config.rb +47 -11
  100. data/lib/openai/models/live/output_audio_fixture_play_event.rb +48 -0
  101. data/lib/openai/models/live/output_audio_fixture_played_event.rb +42 -0
  102. data/lib/openai/models/live/output_audio_fixture_playing_event.rb +41 -0
  103. data/lib/openai/models/live/server_event.rb +17 -2
  104. data/lib/openai/models/live/session_accept_params.rb +47 -11
  105. data/lib/openai/models/live/session_config.rb +47 -11
  106. data/lib/openai/models/live/session_resource.rb +47 -11
  107. data/lib/openai/models/live/session_update_config.rb +38 -6
  108. data/lib/openai/models/live/session_update_event.rb +8 -8
  109. data/lib/openai/models/live/sideband_client_event.rb +57 -0
  110. data/lib/openai/models/live/sideband_server_event.rb +78 -0
  111. data/lib/openai/models/realtime/realtime_audio_config_output.rb +6 -3
  112. data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +6 -3
  113. data/lib/openai/models/realtime/realtime_response_status.rb +10 -1
  114. data/lib/openai/models/response_format_json_schema.rb +1 -1
  115. data/lib/openai/models/responses/function_tool.rb +8 -6
  116. data/lib/openai/models/responses/response.rb +2 -23
  117. data/lib/openai/models/responses/response_compact_params.rb +21 -0
  118. data/lib/openai/models/responses/response_create_params.rb +3 -6
  119. data/lib/openai/models/responses/response_error.rb +19 -1
  120. data/lib/openai/models/responses/response_format_text_config.rb +0 -4
  121. data/lib/openai/models/responses/response_function_tool_call.rb +0 -8
  122. data/lib/openai/models/responses/response_input_item.rb +107 -1
  123. data/lib/openai/models/responses/response_item.rb +107 -1
  124. data/lib/openai/models/responses/response_output_item.rb +107 -1
  125. data/lib/openai/models/responses/response_output_text.rb +0 -8
  126. data/lib/openai/models/responses/responses_client_event.rb +2 -2
  127. data/lib/openai/models/safety/safety_alert.rb +12 -1
  128. data/lib/openai/models/video_create_error.rb +19 -1
  129. data/lib/openai/models/webhooks/unwrap_webhook_event.rb +4 -4
  130. data/lib/openai/models/webhooks/webhook_endpoint_with_secret.rb +0 -9
  131. data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
  132. data/lib/openai/resources/admin/organization/projects/api_keys.rb +61 -0
  133. data/lib/openai/resources/admin/organization/usage.rb +67 -0
  134. data/lib/openai/resources/audio/speech.rb +2 -1
  135. data/lib/openai/resources/audio/voices.rb +10 -10
  136. data/lib/openai/resources/beta/agents/environments/files.rb +3 -31
  137. data/lib/openai/resources/beta/agents/environments.rb +3 -3
  138. data/lib/openai/resources/beta/agents/sessions/artifacts.rb +5 -11
  139. data/lib/openai/resources/beta/agents/sessions.rb +20 -56
  140. data/lib/openai/resources/beta/agents/vaults/credentials.rb +10 -6
  141. data/lib/openai/resources/beta/agents/vaults.rb +45 -6
  142. data/lib/openai/resources/beta/agents.rb +6 -4
  143. data/lib/openai/resources/beta/responses.rb +2 -2
  144. data/lib/openai/resources/chat/completions.rb +11 -37
  145. data/lib/openai/resources/decisions.rb +9 -15
  146. data/lib/openai/resources/files.rb +0 -39
  147. data/lib/openai/resources/images.rb +50 -12
  148. data/lib/openai/resources/live/forks.rb +19 -0
  149. data/lib/openai/resources/live/sideband.rb +19 -0
  150. data/lib/openai/resources/live.rb +19 -0
  151. data/lib/openai/resources/realtime/translations.rb +19 -0
  152. data/lib/openai/resources/realtime.rb +19 -0
  153. data/lib/openai/resources/responses.rb +44 -95
  154. data/lib/openai/resources/vector_stores/file_batches.rb +0 -178
  155. data/lib/openai/resources/vector_stores/files.rb +0 -188
  156. data/lib/openai/resources/webhooks.rb +13 -29
  157. data/lib/openai/version.rb +1 -1
  158. data/lib/openai.rb +31 -0
  159. data/rbi/openai/client.rbi +0 -103
  160. data/rbi/openai/helpers/admin/organization/projects/api_keys.rbi +25 -0
  161. data/rbi/openai/helpers/beta/agents/artifacts.rbi +25 -0
  162. data/rbi/openai/helpers/beta/agents/files.rbi +48 -0
  163. data/rbi/openai/helpers/client_runtime.rbi +108 -0
  164. data/rbi/openai/helpers/files.rbi +25 -0
  165. data/rbi/openai/helpers/models/chat/parsed.rbi +21 -0
  166. data/rbi/openai/helpers/models/responses/parsed.rbi +19 -0
  167. data/rbi/openai/helpers/models/responses/response.rbi +15 -0
  168. data/rbi/openai/helpers/streaming/response_stream.rbi +301 -0
  169. data/rbi/openai/helpers/vector_stores/file_batches.rbi +102 -0
  170. data/rbi/openai/helpers/vector_stores/files.rbi +122 -0
  171. data/rbi/openai/helpers/websocket.rbi +82 -0
  172. data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
  173. data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
  174. data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +63 -4
  175. data/rbi/openai/models/admin/organization/oci_external_storage_provider.rbi +71 -0
  176. data/rbi/openai/models/admin/organization/project_residency.rbi +12 -0
  177. data/rbi/openai/models/admin/organization/projects/api_key_update_params.rbi +110 -0
  178. data/rbi/openai/models/admin/organization/projects/api_key_update_scopes_params.rbi +72 -0
  179. data/rbi/openai/models/admin/organization/usage_decisions_params.rbi +229 -0
  180. data/rbi/openai/models/admin/organization/usage_decisions_response.rbi +479 -0
  181. data/rbi/openai/models/audio/speech_create_params.rbi +6 -3
  182. data/rbi/openai/models/audio/voice.rbi +21 -2
  183. data/rbi/openai/models/audio/voice_create_params.rbi +149 -4
  184. data/rbi/openai/models/beta/agent_create_params.rbi +4 -2
  185. data/rbi/openai/models/beta/agent_list_params.rbi +8 -5
  186. data/rbi/openai/models/beta/agent_session.rbi +64 -1
  187. data/rbi/openai/models/beta/agent_update_params.rbi +4 -2
  188. data/rbi/openai/models/beta/agents/environment_list_params.rbi +7 -7
  189. data/rbi/openai/models/beta/agents/session_create_params.rbi +62 -2
  190. data/rbi/openai/models/beta/agents/session_list_params.rbi +11 -11
  191. data/rbi/openai/models/beta/agents/session_update_params.rbi +56 -0
  192. data/rbi/openai/models/beta/agents/sessions/artifact_list_params.rbi +19 -13
  193. data/rbi/openai/models/beta/agents/vault_list_params.rbi +30 -13
  194. data/rbi/openai/models/beta/agents/vault_status_filter.rbi +1 -3
  195. data/rbi/openai/models/beta/agents/vault_update_params.rbi +87 -0
  196. data/rbi/openai/models/beta/agents/vaults/credential_list_params.rbi +30 -13
  197. data/rbi/openai/models/beta/beta_response.rbi +2 -2
  198. data/rbi/openai/models/beta/beta_response_error.rbi +24 -3
  199. data/rbi/openai/models/beta/beta_response_input_item.rbi +191 -0
  200. data/rbi/openai/models/beta/beta_response_item.rbi +189 -0
  201. data/rbi/openai/models/beta/beta_response_output_item.rbi +191 -0
  202. data/rbi/openai/models/beta/beta_responses_client_event.rbi +2 -2
  203. data/rbi/openai/models/beta/response_create_params.rbi +2 -2
  204. data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
  205. data/rbi/openai/models/chat/chat_completion_audio_param.rbi +3 -3
  206. data/rbi/openai/models/chat/chat_completion_message.rbi +0 -4
  207. data/rbi/openai/models/chat/chat_completion_message_function_tool_call.rbi +0 -4
  208. data/rbi/openai/models/chat/completion_create_params.rbi +63 -78
  209. data/rbi/openai/models/conversations/conversation_item.rbi +191 -0
  210. data/rbi/openai/models/decision.rbi +14 -1
  211. data/rbi/openai/models/decision_create_params.rbi +23 -12
  212. data/rbi/openai/models/decision_input_image.rbi +4 -3
  213. data/rbi/openai/models/decision_input_message.rbi +4 -4
  214. data/rbi/openai/models/decision_input_part.rbi +2 -1
  215. data/rbi/openai/models/image_edit_completed_event.rbi +16 -1
  216. data/rbi/openai/models/image_edit_params.rbi +26 -4
  217. data/rbi/openai/models/image_edit_partial_image_event.rbi +1 -0
  218. data/rbi/openai/models/image_gen_completed_event.rbi +16 -1
  219. data/rbi/openai/models/image_gen_partial_image_event.rbi +1 -0
  220. data/rbi/openai/models/image_generate_params.rbi +26 -4
  221. data/rbi/openai/models/images_response.rbi +15 -0
  222. data/rbi/openai/models/live/built_in_voice.rbi +1 -0
  223. data/rbi/openai/models/live/client_event.rbi +4 -0
  224. data/rbi/openai/models/live/decision_create_event.rbi +55 -0
  225. data/rbi/openai/models/live/decision_event.rbi +185 -0
  226. data/rbi/openai/models/live/decision_item_create_event.rbi +338 -0
  227. data/rbi/openai/models/live/decision_item_created_event.rbi +354 -0
  228. data/rbi/openai/models/live/decision_item_delete_event.rbi +66 -0
  229. data/rbi/openai/models/live/decision_item_deleted_event.rbi +77 -0
  230. data/rbi/openai/models/live/decision_trigger.rbi +465 -0
  231. data/rbi/openai/models/live/decisions_delegation_config.rbi +393 -0
  232. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +412 -0
  233. data/rbi/openai/models/live/delegation_created_event.rbi +8 -10
  234. data/rbi/openai/models/live/fork_client_event.rbi +4 -0
  235. data/rbi/openai/models/live/fork_server_event.rbi +5 -0
  236. data/rbi/openai/models/live/media_session_config.rbi +95 -14
  237. data/rbi/openai/models/live/output_audio_fixture_play_event.rbi +76 -0
  238. data/rbi/openai/models/live/output_audio_fixture_played_event.rbi +73 -0
  239. data/rbi/openai/models/live/output_audio_fixture_playing_event.rbi +72 -0
  240. data/rbi/openai/models/live/server_event.rbi +5 -0
  241. data/rbi/openai/models/live/session_accept_params.rbi +88 -12
  242. data/rbi/openai/models/live/session_config.rbi +100 -14
  243. data/rbi/openai/models/live/session_resource.rbi +81 -10
  244. data/rbi/openai/models/live/session_update_config.rbi +86 -9
  245. data/rbi/openai/models/live/session_update_event.rbi +8 -8
  246. data/rbi/openai/models/live/sideband_client_event.rbi +40 -0
  247. data/rbi/openai/models/live/sideband_server_event.rbi +47 -0
  248. data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +6 -3
  249. data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +6 -3
  250. data/rbi/openai/models/realtime/realtime_response_status.rbi +13 -1
  251. data/rbi/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbi +1 -1
  252. data/rbi/openai/models/realtime/realtime_translation_output_audio_delta_event.rbi +3 -3
  253. data/rbi/openai/models/realtime/realtime_translation_session_close_event.rbi +1 -1
  254. data/rbi/openai/models/realtime/realtime_translation_session_update_event.rbi +5 -1
  255. data/rbi/openai/models/responses/response.rbi +2 -7
  256. data/rbi/openai/models/responses/response_create_params.rbi +5 -9
  257. data/rbi/openai/models/responses/response_error.rbi +24 -3
  258. data/rbi/openai/models/responses/response_function_tool_call.rbi +0 -4
  259. data/rbi/openai/models/responses/response_function_web_search.rbi +21 -17
  260. data/rbi/openai/models/responses/response_input_item.rbi +191 -0
  261. data/rbi/openai/models/responses/response_item.rbi +189 -0
  262. data/rbi/openai/models/responses/response_output_item.rbi +191 -0
  263. data/rbi/openai/models/responses/response_output_text.rbi +0 -4
  264. data/rbi/openai/models/responses/responses_client_event.rbi +2 -2
  265. data/rbi/openai/models/safety/safety_alert.rbi +13 -1
  266. data/rbi/openai/models/video_create_error.rbi +24 -3
  267. data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -1
  268. data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
  269. data/rbi/openai/resources/admin/organization/projects/api_keys.rbi +48 -0
  270. data/rbi/openai/resources/admin/organization/usage.rbi +56 -0
  271. data/rbi/openai/resources/audio/speech.rbi +2 -1
  272. data/rbi/openai/resources/audio/voices.rbi +13 -10
  273. data/rbi/openai/resources/beta/agents/environments/files.rbi +3 -33
  274. data/rbi/openai/resources/beta/agents/environments.rbi +3 -3
  275. data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +5 -13
  276. data/rbi/openai/resources/beta/agents/sessions.rbi +15 -4
  277. data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +9 -5
  278. data/rbi/openai/resources/beta/agents/vaults.rbi +34 -5
  279. data/rbi/openai/resources/beta/agents.rbi +6 -4
  280. data/rbi/openai/resources/beta/responses.rbi +2 -2
  281. data/rbi/openai/resources/chat/completions.rbi +26 -29
  282. data/rbi/openai/resources/decisions.rbi +9 -15
  283. data/rbi/openai/resources/files.rbi +0 -18
  284. data/rbi/openai/resources/images.rbi +44 -8
  285. data/rbi/openai/resources/live/forks.rbi +17 -0
  286. data/rbi/openai/resources/live/sideband.rbi +17 -0
  287. data/rbi/openai/resources/live.rbi +17 -0
  288. data/rbi/openai/resources/realtime/translations.rbi +17 -0
  289. data/rbi/openai/resources/realtime.rbi +17 -0
  290. data/rbi/openai/resources/responses.rbi +41 -333
  291. data/rbi/openai/resources/vector_stores/file_batches.rbi +0 -93
  292. data/rbi/openai/resources/vector_stores/files.rbi +0 -113
  293. data/rbi/openai/resources/webhooks.rbi +1 -1
  294. data/sig/openai/client.rbs +0 -50
  295. data/sig/openai/helpers/admin/organization/projects/api_keys.rbs +18 -0
  296. data/sig/openai/helpers/beta/agents/artifacts.rbs +17 -0
  297. data/sig/openai/helpers/beta/agents/files.rbs +30 -0
  298. data/sig/openai/helpers/client_runtime.rbs +53 -0
  299. data/sig/openai/helpers/files.rbs +12 -0
  300. data/sig/openai/helpers/models/responses/response.rbs +9 -0
  301. data/sig/openai/helpers/streaming/response_stream.rbs +37 -0
  302. data/sig/openai/helpers/vector_stores/file_batches.rbs +38 -0
  303. data/sig/openai/helpers/vector_stores/files.rbs +43 -0
  304. data/sig/openai/helpers/websocket.rbs +40 -0
  305. data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
  306. data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
  307. data/sig/openai/models/admin/organization/external_storage_create_params.rbs +33 -0
  308. data/sig/openai/models/admin/organization/oci_external_storage_provider.rbs +34 -0
  309. data/sig/openai/models/admin/organization/project_residency.rbs +6 -0
  310. data/sig/openai/models/admin/organization/projects/api_key_update_params.rbs +77 -0
  311. data/sig/openai/models/admin/organization/projects/api_key_update_scopes_params.rbs +38 -0
  312. data/sig/openai/models/admin/organization/usage_decisions_params.rbs +170 -0
  313. data/sig/openai/models/admin/organization/usage_decisions_response.rbs +319 -0
  314. data/sig/openai/models/audio/speech_create_params.rbs +4 -2
  315. data/sig/openai/models/audio/voice.rbs +21 -3
  316. data/sig/openai/models/audio/voice_create_params.rbs +90 -1
  317. data/sig/openai/models/beta/agent_create_params.rbs +4 -2
  318. data/sig/openai/models/beta/agent_list_params.rbs +9 -6
  319. data/sig/openai/models/beta/agent_session.rbs +36 -2
  320. data/sig/openai/models/beta/agent_update_params.rbs +4 -2
  321. data/sig/openai/models/beta/agents/environment_list_params.rbs +9 -9
  322. data/sig/openai/models/beta/agents/session_create_params.rbs +29 -2
  323. data/sig/openai/models/beta/agents/session_list_params.rbs +12 -12
  324. data/sig/openai/models/beta/agents/session_update_params.rbs +23 -0
  325. data/sig/openai/models/beta/agents/sessions/artifact_list_params.rbs +21 -15
  326. data/sig/openai/models/beta/agents/vault_list_params.rbs +32 -14
  327. data/sig/openai/models/beta/agents/vault_update_params.rbs +54 -0
  328. data/sig/openai/models/beta/agents/vaults/credential_list_params.rbs +32 -14
  329. data/sig/openai/models/beta/beta_response.rbs +2 -2
  330. data/sig/openai/models/beta/beta_response_error.rbs +19 -3
  331. data/sig/openai/models/beta/beta_response_input_item.rbs +110 -0
  332. data/sig/openai/models/beta/beta_response_item.rbs +110 -0
  333. data/sig/openai/models/beta/beta_response_output_item.rbs +110 -0
  334. data/sig/openai/models/beta/beta_responses_client_event.rbs +2 -2
  335. data/sig/openai/models/beta/response_create_params.rbs +2 -2
  336. data/sig/openai/models/beta/session_turn_error.rbs +4 -0
  337. data/sig/openai/models/chat/chat_completion_audio_param.rbs +2 -2
  338. data/sig/openai/models/chat/completion_create_params.rbs +2 -2
  339. data/sig/openai/models/conversations/conversation_item.rbs +110 -0
  340. data/sig/openai/models/decision.rbs +13 -0
  341. data/sig/openai/models/decision_create_params.rbs +19 -8
  342. data/sig/openai/models/decision_input_image.rbs +2 -2
  343. data/sig/openai/models/decision_input_message.rbs +2 -2
  344. data/sig/openai/models/image_edit_completed_event.rbs +14 -2
  345. data/sig/openai/models/image_edit_params.rbs +27 -6
  346. data/sig/openai/models/image_gen_completed_event.rbs +14 -2
  347. data/sig/openai/models/image_generate_params.rbs +27 -6
  348. data/sig/openai/models/images_response.rbs +12 -0
  349. data/sig/openai/models/live/built_in_voice.rbs +2 -0
  350. data/sig/openai/models/live/client_event.rbs +4 -0
  351. data/sig/openai/models/live/decision_create_event.rbs +18 -0
  352. data/sig/openai/models/live/decision_event.rbs +102 -0
  353. data/sig/openai/models/live/decision_item_create_event.rbs +183 -0
  354. data/sig/openai/models/live/decision_item_created_event.rbs +195 -0
  355. data/sig/openai/models/live/decision_item_delete_event.rbs +33 -0
  356. data/sig/openai/models/live/decision_item_deleted_event.rbs +49 -0
  357. data/sig/openai/models/live/decision_trigger.rbs +234 -0
  358. data/sig/openai/models/live/decisions_delegation_config.rbs +195 -0
  359. data/sig/openai/models/live/decisions_delegation_update_config.rbs +202 -0
  360. data/sig/openai/models/live/delegation_created_event.rbs +6 -7
  361. data/sig/openai/models/live/fork_client_event.rbs +4 -0
  362. data/sig/openai/models/live/fork_server_event.rbs +5 -0
  363. data/sig/openai/models/live/media_session_config.rbs +58 -11
  364. data/sig/openai/models/live/output_audio_fixture_play_event.rbs +42 -0
  365. data/sig/openai/models/live/output_audio_fixture_played_event.rbs +44 -0
  366. data/sig/openai/models/live/output_audio_fixture_playing_event.rbs +44 -0
  367. data/sig/openai/models/live/server_event.rbs +5 -0
  368. data/sig/openai/models/live/session_accept_params.rbs +57 -10
  369. data/sig/openai/models/live/session_config.rbs +58 -11
  370. data/sig/openai/models/live/session_resource.rbs +57 -10
  371. data/sig/openai/models/live/session_update_config.rbs +54 -3
  372. data/sig/openai/models/live/session_update_event.rbs +6 -6
  373. data/sig/openai/models/live/sideband_client_event.rbs +26 -0
  374. data/sig/openai/models/live/sideband_server_event.rbs +33 -0
  375. data/sig/openai/models/realtime/realtime_audio_config_output.rbs +6 -3
  376. data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +6 -3
  377. data/sig/openai/models/realtime/realtime_response_status.rbs +15 -3
  378. data/sig/openai/models/responses/response.rbs +2 -4
  379. data/sig/openai/models/responses/response_create_params.rbs +2 -2
  380. data/sig/openai/models/responses/response_error.rbs +19 -3
  381. data/sig/openai/models/responses/response_input_item.rbs +110 -0
  382. data/sig/openai/models/responses/response_item.rbs +110 -0
  383. data/sig/openai/models/responses/response_output_item.rbs +110 -0
  384. data/sig/openai/models/responses/responses_client_event.rbs +2 -2
  385. data/sig/openai/models/safety/safety_alert.rbs +12 -2
  386. data/sig/openai/models/video_create_error.rbs +19 -3
  387. data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -1
  388. data/sig/openai/resources/admin/organization/projects/api_keys.rbs +8 -0
  389. data/sig/openai/resources/admin/organization/usage.rbs +15 -0
  390. data/sig/openai/resources/beta/agents/environments/files.rbs +0 -17
  391. data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +2 -6
  392. data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
  393. data/sig/openai/resources/beta/agents/vaults/credentials.rbs +2 -1
  394. data/sig/openai/resources/beta/agents/vaults.rbs +9 -1
  395. data/sig/openai/resources/beta/agents.rbs +1 -1
  396. data/sig/openai/resources/files.rbs +0 -7
  397. data/sig/openai/resources/images.rbs +4 -0
  398. data/sig/openai/resources/live/forks.rbs +8 -0
  399. data/sig/openai/resources/live/sideband.rbs +8 -0
  400. data/sig/openai/resources/live.rbs +7 -0
  401. data/sig/openai/resources/realtime/translations.rbs +7 -0
  402. data/sig/openai/resources/realtime.rbs +7 -0
  403. data/sig/openai/resources/responses.rbs +7 -31
  404. data/sig/openai/resources/vector_stores/file_batches.rbs +0 -31
  405. data/sig/openai/resources/vector_stores/files.rbs +0 -36
  406. data/sig/openai/resources/webhooks.rbs +1 -1
  407. metadata +89 -1
@@ -0,0 +1,479 @@
1
+ # typed: strong
2
+
3
+ module OpenAI
4
+ module Models
5
+
6
+ module Admin
7
+
8
+ module Organization
9
+
10
+ class UsageDecisionsResponse < OpenAI::Internal::Type::BaseModel
11
+
12
+ OrHash = T.type_alias do
13
+ T.any(
14
+ OpenAI::Models::Admin::Organization::UsageDecisionsResponse,
15
+ OpenAI::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ sig { returns(T::Array[OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data]) }
20
+ attr_accessor :data
21
+
22
+ sig { returns(T::Boolean) }
23
+ attr_accessor :has_more
24
+
25
+ sig { returns(T.nilable(String)) }
26
+ attr_accessor :next_page
27
+
28
+ sig { returns(Symbol) }
29
+ attr_accessor :object
30
+
31
+ sig do
32
+ params(
33
+
34
+ data: T::Array[OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::OrHash],
35
+
36
+ has_more: T::Boolean,
37
+
38
+ next_page: T.nilable(String),
39
+
40
+ object: Symbol
41
+ )
42
+ .returns(T.attached_class)
43
+ end
44
+ def self.new(
45
+
46
+ data:,
47
+
48
+ has_more:,
49
+
50
+ next_page:,
51
+
52
+ object: :page
53
+ )
54
+ end
55
+
56
+ sig do
57
+ override.returns(
58
+ {
59
+ data: T::Array[OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data],
60
+ has_more: T::Boolean,
61
+ next_page: T.nilable(String),
62
+ object: Symbol
63
+ }
64
+ )
65
+ end
66
+ def to_hash
67
+ end
68
+
69
+ class Data < OpenAI::Internal::Type::BaseModel
70
+ OrHash = T.type_alias do
71
+ T.any(
72
+ OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data,
73
+ OpenAI::Internal::AnyHash
74
+ )
75
+ end
76
+
77
+ sig { returns(Integer) }
78
+ attr_accessor :end_time
79
+
80
+ sig { returns(Symbol) }
81
+ attr_accessor :object
82
+
83
+ sig { returns(T::Array[OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result]) }
84
+ attr_accessor :results
85
+
86
+ sig { returns(Integer) }
87
+ attr_accessor :start_time
88
+
89
+ sig do
90
+ params(
91
+
92
+ end_time: Integer,
93
+
94
+ results: T::Array[OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result::OrHash],
95
+
96
+ start_time: Integer,
97
+
98
+ object: Symbol
99
+ )
100
+ .returns(T.attached_class)
101
+ end
102
+ def self.new(
103
+
104
+ end_time:,
105
+
106
+ results:,
107
+
108
+ start_time:,
109
+
110
+ object: :bucket
111
+ )
112
+ end
113
+
114
+ sig do
115
+ override.returns(
116
+ {
117
+ end_time: Integer,
118
+ object: Symbol,
119
+ results: T::Array[OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result],
120
+ start_time: Integer
121
+ }
122
+ )
123
+ end
124
+ def to_hash
125
+ end
126
+
127
+ class Result < OpenAI::Internal::Type::BaseModel
128
+ OrHash = T.type_alias do
129
+ T.any(
130
+ OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result,
131
+ OpenAI::Internal::AnyHash
132
+ )
133
+ end
134
+
135
+ # The aggregated number of input tokens used, including cached and cache-write
136
+ # tokens. This includes text, audio, and image tokens. For customers subscribed to
137
+ # Scale Tier, this includes Scale Tier tokens.
138
+ sig { returns(Integer) }
139
+ attr_accessor :input_tokens
140
+
141
+ # The count of requests made to the model.
142
+ sig { returns(Integer) }
143
+ attr_accessor :num_model_requests
144
+
145
+ sig { returns(Symbol) }
146
+ attr_accessor :object
147
+
148
+ # The aggregated number of output tokens used across text, audio, and image
149
+ # outputs. For customers subscribed to Scale Tier, this includes Scale Tier
150
+ # tokens.
151
+ sig { returns(Integer) }
152
+ attr_accessor :output_tokens
153
+
154
+ # When `group_by=api_key_id`, this field provides the API key ID of the grouped
155
+ # usage result.
156
+ sig { returns(T.nilable(String)) }
157
+ attr_accessor :api_key_id
158
+
159
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
160
+ # activity and `unlabeled` includes all records without published source
161
+ # attribution, including historical and unknown origins. Unlabeled does not imply
162
+ # direct API usage. Without source grouping, this field is null.
163
+ sig {
164
+ returns(
165
+ T.nilable(
166
+ OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result::APISource::TaggedSymbol
167
+ )
168
+ )
169
+ }
170
+ attr_accessor :api_source
171
+
172
+ # When `group_by=batch`, this field tells whether the grouped usage result is
173
+ # batch or not.
174
+ sig { returns(T.nilable(T::Boolean)) }
175
+ attr_accessor :batch
176
+
177
+ # The aggregated number of uncached audio input tokens used.
178
+ sig { returns(T.nilable(Integer)) }
179
+ attr_accessor :input_audio_tokens
180
+
181
+ # The aggregated number of input tokens written to the cache with a 12-hour
182
+ # retention period.
183
+ sig { returns(T.nilable(Integer)) }
184
+ attr_accessor :input_cache_write_12h_tokens
185
+
186
+ # The aggregated number of input tokens written to the cache with a 30-minute
187
+ # retention period.
188
+ sig { returns(T.nilable(Integer)) }
189
+ attr_accessor :input_cache_write_tokens
190
+
191
+ # The aggregated number of cached audio input tokens used.
192
+ sig { returns(T.nilable(Integer)) }
193
+ attr_accessor :input_cached_audio_tokens
194
+
195
+ # The aggregated number of cached image input tokens used.
196
+ sig { returns(T.nilable(Integer)) }
197
+ attr_accessor :input_cached_image_tokens
198
+
199
+ # The aggregated number of cached text input tokens used.
200
+ sig { returns(T.nilable(Integer)) }
201
+ attr_accessor :input_cached_text_tokens
202
+
203
+ # The aggregated number of cached input tokens used across text, audio, and image
204
+ # inputs. For customers subscribed to Scale Tier, this includes Scale Tier tokens.
205
+ sig { returns(T.nilable(Integer)) }
206
+ attr_accessor :input_cached_tokens
207
+
208
+ # The aggregated number of uncached image input tokens used.
209
+ sig { returns(T.nilable(Integer)) }
210
+ attr_accessor :input_image_tokens
211
+
212
+ # The aggregated number of uncached text input tokens used, excluding cache-write
213
+ # tokens.
214
+ sig { returns(T.nilable(Integer)) }
215
+ attr_accessor :input_text_tokens
216
+
217
+ # The aggregated number of uncached input tokens used across text, audio, and
218
+ # image inputs, excluding cache-write tokens.
219
+ sig { returns(T.nilable(Integer)) }
220
+ attr_accessor :input_uncached_tokens
221
+
222
+ # When `group_by=model`, this field provides the model name of the grouped usage
223
+ # result.
224
+ sig { returns(T.nilable(String)) }
225
+ attr_accessor :model
226
+
227
+ # The aggregated number of audio output tokens used.
228
+ sig { returns(T.nilable(Integer)) }
229
+ attr_accessor :output_audio_tokens
230
+
231
+ # The aggregated number of image output tokens used.
232
+ sig { returns(T.nilable(Integer)) }
233
+ attr_accessor :output_image_tokens
234
+
235
+ # The aggregated number of text output tokens used.
236
+ sig { returns(T.nilable(Integer)) }
237
+ attr_accessor :output_text_tokens
238
+
239
+ # When `group_by=project_id`, this field provides the project ID of the grouped
240
+ # usage result.
241
+ sig { returns(T.nilable(String)) }
242
+ attr_accessor :project_id
243
+
244
+ # When `group_by=service_tier`, this field provides the service tier of the
245
+ # grouped usage result.
246
+ sig { returns(T.nilable(String)) }
247
+ attr_accessor :service_tier
248
+
249
+ # When `group_by=user_id`, this field provides the user ID of the grouped usage
250
+ # result.
251
+ sig { returns(T.nilable(String)) }
252
+ attr_accessor :user_id
253
+
254
+ # The aggregated Decisions API usage details of the specific time bucket.
255
+ sig do
256
+ params(
257
+
258
+ input_tokens: Integer,
259
+
260
+ num_model_requests: Integer,
261
+
262
+ output_tokens: Integer,
263
+
264
+ api_key_id: T.nilable(String),
265
+
266
+ api_source: T.nilable(
267
+ OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result::APISource::OrSymbol
268
+ ),
269
+
270
+ batch: T.nilable(T::Boolean),
271
+
272
+ input_audio_tokens: T.nilable(Integer),
273
+
274
+ input_cache_write_12h_tokens: T.nilable(Integer),
275
+
276
+ input_cache_write_tokens: T.nilable(Integer),
277
+
278
+ input_cached_audio_tokens: T.nilable(Integer),
279
+
280
+ input_cached_image_tokens: T.nilable(Integer),
281
+
282
+ input_cached_text_tokens: T.nilable(Integer),
283
+
284
+ input_cached_tokens: T.nilable(Integer),
285
+
286
+ input_image_tokens: T.nilable(Integer),
287
+
288
+ input_text_tokens: T.nilable(Integer),
289
+
290
+ input_uncached_tokens: T.nilable(Integer),
291
+
292
+ model: T.nilable(String),
293
+
294
+ output_audio_tokens: T.nilable(Integer),
295
+
296
+ output_image_tokens: T.nilable(Integer),
297
+
298
+ output_text_tokens: T.nilable(Integer),
299
+
300
+ project_id: T.nilable(String),
301
+
302
+ service_tier: T.nilable(String),
303
+
304
+ user_id: T.nilable(String),
305
+
306
+ object: Symbol
307
+ )
308
+ .returns(T.attached_class)
309
+ end
310
+ def self.new(
311
+
312
+ # The aggregated number of input tokens used, including cached and cache-write
313
+ # tokens. This includes text, audio, and image tokens. For customers subscribed to
314
+ # Scale Tier, this includes Scale Tier tokens.
315
+ input_tokens:,
316
+
317
+ # The count of requests made to the model.
318
+ num_model_requests:,
319
+
320
+ # The aggregated number of output tokens used across text, audio, and image
321
+ # outputs. For customers subscribed to Scale Tier, this includes Scale Tier
322
+ # tokens.
323
+ output_tokens:,
324
+
325
+ # When `group_by=api_key_id`, this field provides the API key ID of the grouped
326
+ # usage result.
327
+ api_key_id: nil,
328
+
329
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
330
+ # activity and `unlabeled` includes all records without published source
331
+ # attribution, including historical and unknown origins. Unlabeled does not imply
332
+ # direct API usage. Without source grouping, this field is null.
333
+ api_source: nil,
334
+
335
+ # When `group_by=batch`, this field tells whether the grouped usage result is
336
+ # batch or not.
337
+ batch: nil,
338
+
339
+ # The aggregated number of uncached audio input tokens used.
340
+ input_audio_tokens: nil,
341
+
342
+ # The aggregated number of input tokens written to the cache with a 12-hour
343
+ # retention period.
344
+ input_cache_write_12h_tokens: nil,
345
+
346
+ # The aggregated number of input tokens written to the cache with a 30-minute
347
+ # retention period.
348
+ input_cache_write_tokens: nil,
349
+
350
+ # The aggregated number of cached audio input tokens used.
351
+ input_cached_audio_tokens: nil,
352
+
353
+ # The aggregated number of cached image input tokens used.
354
+ input_cached_image_tokens: nil,
355
+
356
+ # The aggregated number of cached text input tokens used.
357
+ input_cached_text_tokens: nil,
358
+
359
+ # The aggregated number of cached input tokens used across text, audio, and image
360
+ # inputs. For customers subscribed to Scale Tier, this includes Scale Tier tokens.
361
+ input_cached_tokens: nil,
362
+
363
+ # The aggregated number of uncached image input tokens used.
364
+ input_image_tokens: nil,
365
+
366
+ # The aggregated number of uncached text input tokens used, excluding cache-write
367
+ # tokens.
368
+ input_text_tokens: nil,
369
+
370
+ # The aggregated number of uncached input tokens used across text, audio, and
371
+ # image inputs, excluding cache-write tokens.
372
+ input_uncached_tokens: nil,
373
+
374
+ # When `group_by=model`, this field provides the model name of the grouped usage
375
+ # result.
376
+ model: nil,
377
+
378
+ # The aggregated number of audio output tokens used.
379
+ output_audio_tokens: nil,
380
+
381
+ # The aggregated number of image output tokens used.
382
+ output_image_tokens: nil,
383
+
384
+ # The aggregated number of text output tokens used.
385
+ output_text_tokens: nil,
386
+
387
+ # When `group_by=project_id`, this field provides the project ID of the grouped
388
+ # usage result.
389
+ project_id: nil,
390
+
391
+ # When `group_by=service_tier`, this field provides the service tier of the
392
+ # grouped usage result.
393
+ service_tier: nil,
394
+
395
+ # When `group_by=user_id`, this field provides the user ID of the grouped usage
396
+ # result.
397
+ user_id: nil,
398
+
399
+ object: :"organization.usage.decisions.result"
400
+ )
401
+ end
402
+
403
+ sig do
404
+ override.returns(
405
+ {
406
+ input_tokens: Integer,
407
+ num_model_requests: Integer,
408
+ object: Symbol,
409
+ output_tokens: Integer,
410
+ api_key_id: T.nilable(String),
411
+ api_source: T.nilable(
412
+ OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result::APISource::TaggedSymbol
413
+ ),
414
+ batch: T.nilable(T::Boolean),
415
+ input_audio_tokens: T.nilable(Integer),
416
+ input_cache_write_12h_tokens: T.nilable(Integer),
417
+ input_cache_write_tokens: T.nilable(Integer),
418
+ input_cached_audio_tokens: T.nilable(Integer),
419
+ input_cached_image_tokens: T.nilable(Integer),
420
+ input_cached_text_tokens: T.nilable(Integer),
421
+ input_cached_tokens: T.nilable(Integer),
422
+ input_image_tokens: T.nilable(Integer),
423
+ input_text_tokens: T.nilable(Integer),
424
+ input_uncached_tokens: T.nilable(Integer),
425
+ model: T.nilable(String),
426
+ output_audio_tokens: T.nilable(Integer),
427
+ output_image_tokens: T.nilable(Integer),
428
+ output_text_tokens: T.nilable(Integer),
429
+ project_id: T.nilable(String),
430
+ service_tier: T.nilable(String),
431
+ user_id: T.nilable(String)
432
+ }
433
+ )
434
+ end
435
+ def to_hash
436
+ end
437
+
438
+ # When grouped by `api_source`, `agents_api` identifies attributed Agents API
439
+ # activity and `unlabeled` includes all records without published source
440
+ # attribution, including historical and unknown origins. Unlabeled does not imply
441
+ # direct API usage. Without source grouping, this field is null.
442
+ module APISource
443
+ extend OpenAI::Internal::Type::Enum
444
+
445
+ TaggedSymbol = T.type_alias {
446
+ T.all(Symbol, OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result::APISource)
447
+ }
448
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
449
+
450
+ AGENTS_API = T.let(
451
+ :agents_api,
452
+ OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result::APISource::TaggedSymbol
453
+ )
454
+ UNLABELED = T.let(
455
+ :unlabeled,
456
+ OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result::APISource::TaggedSymbol
457
+ )
458
+
459
+ sig {
460
+ override.returns(
461
+ T::Array[
462
+ OpenAI::Models::Admin::Organization::UsageDecisionsResponse::Data::Result::APISource::TaggedSymbol
463
+ ]
464
+ )
465
+ }
466
+ def self.values
467
+ end
468
+ end
469
+ end
470
+ end
471
+
472
+ end
473
+
474
+ end
475
+
476
+ end
477
+
478
+ end
479
+ end
@@ -33,7 +33,8 @@ module OpenAI
33
33
  # object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the
34
34
  # voices are available in the
35
35
  # [Text to speech guide](https://developers.openai.com/api/docs/guides/text-to-speech#voice-options).
36
- # Custom voices must be created from audio samples.
36
+ # Custom voices must be created from audio samples. Voices created from text
37
+ # prompts are supported only in Live.
37
38
  sig {
38
39
  returns(
39
40
  T.any(
@@ -118,7 +119,8 @@ module OpenAI
118
119
  # object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the
119
120
  # voices are available in the
120
121
  # [Text to speech guide](https://developers.openai.com/api/docs/guides/text-to-speech#voice-options).
121
- # Custom voices must be created from audio samples.
122
+ # Custom voices must be created from audio samples. Voices created from text
123
+ # prompts are supported only in Live.
122
124
  voice:,
123
125
 
124
126
  # Control the voice of your generated audio with additional instructions. Does not
@@ -182,7 +184,8 @@ module OpenAI
182
184
  # object with an `id`, for example `{ "id": "voice_1234" }`. Previews of the
183
185
  # voices are available in the
184
186
  # [Text to speech guide](https://developers.openai.com/api/docs/guides/text-to-speech#voice-options).
185
- # Custom voices must be created from audio samples.
187
+ # Custom voices must be created from audio samples. Voices created from text
188
+ # prompts are supported only in Live.
186
189
  module Voice
187
190
  extend OpenAI::Internal::Type::Union
188
191
 
@@ -34,7 +34,17 @@ module OpenAI
34
34
  sig { returns(OpenAI::Audio::Voice::Type::TaggedSymbol) }
35
35
  attr_accessor :type
36
36
 
37
- # A custom voice that can be used for audio output.
37
+ # The original text prompt used to create the voice. Present for prompt-generated
38
+ # voices with a stored prompt; omitted for audio-sample voices and older voices
39
+ # without a stored prompt.
40
+ sig { returns(T.nilable(String)) }
41
+ attr_reader :prompt
42
+
43
+ sig { params(prompt: String).void }
44
+ attr_writer :prompt
45
+
46
+ # A custom voice that can be used for audio output. Voices created from text
47
+ # prompts are supported only in Live.
38
48
  sig do
39
49
  params(
40
50
 
@@ -46,6 +56,8 @@ module OpenAI
46
56
 
47
57
  type: OpenAI::Audio::Voice::Type::OrSymbol,
48
58
 
59
+ prompt: String,
60
+
49
61
  object: Symbol
50
62
  )
51
63
  .returns(T.attached_class)
@@ -64,6 +76,11 @@ module OpenAI
64
76
  # How the voice was created.
65
77
  type:,
66
78
 
79
+ # The original text prompt used to create the voice. Present for prompt-generated
80
+ # voices with a stored prompt; omitted for audio-sample voices and older voices
81
+ # without a stored prompt.
82
+ prompt: nil,
83
+
67
84
  # The object type, which is always `audio.voice`.
68
85
 
69
86
  object: :"audio.voice"
@@ -77,7 +94,8 @@ module OpenAI
77
94
  created_at: Integer,
78
95
  name: String,
79
96
  object: Symbol,
80
- type: OpenAI::Audio::Voice::Type::TaggedSymbol
97
+ type: OpenAI::Audio::Voice::Type::TaggedSymbol,
98
+ prompt: String
81
99
  }
82
100
  )
83
101
  end
@@ -92,6 +110,7 @@ module OpenAI
92
110
  OrSymbol = T.type_alias { T.any(Symbol, String) }
93
111
 
94
112
  AUDIO_SAMPLE = T.let(:audio_sample, OpenAI::Audio::Voice::Type::TaggedSymbol)
113
+ PROMPT = T.let(:prompt, OpenAI::Audio::Voice::Type::TaggedSymbol)
95
114
 
96
115
  sig { override.returns(T::Array[OpenAI::Audio::Voice::Type::TaggedSymbol]) }
97
116
  def self.values