openai 0.110.0 → 0.112.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 (255) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/README.md +1 -1
  4. data/lib/openai/models/beta/agent.rb +2 -2
  5. data/lib/openai/models/beta/agent_create_params.rb +2 -2
  6. data/lib/openai/models/beta/agent_session.rb +2 -2
  7. data/lib/openai/models/beta/agent_tool.rb +18 -1
  8. data/lib/openai/models/beta/agent_tool_param.rb +18 -1
  9. data/lib/openai/models/beta/agent_update_params.rb +2 -2
  10. data/lib/openai/models/beta/agents/session_create_params.rb +2 -2
  11. data/lib/openai/models/beta/beta_response_input_file.rb +23 -1
  12. data/lib/openai/models/beta/beta_response_input_file_content.rb +23 -1
  13. data/lib/openai/models/beta/beta_response_input_image.rb +23 -1
  14. data/lib/openai/models/beta/beta_response_input_image_content.rb +23 -1
  15. data/lib/openai/models/beta/beta_response_input_text.rb +23 -1
  16. data/lib/openai/models/beta/beta_response_input_text_content.rb +23 -1
  17. data/lib/openai/models/beta/beta_response_item.rb +28 -1
  18. data/lib/openai/models/beta/beta_response_output_item.rb +28 -1
  19. data/lib/openai/models/beta/beta_response_tool_search_output_item_param.rb +26 -15
  20. data/lib/openai/models/beta/beta_tool.rb +26 -15
  21. data/lib/openai/models/beta/persisted_agent_tool.rb +18 -1
  22. data/lib/openai/models/beta/persisted_agent_tool_param.rb +18 -1
  23. data/lib/openai/models/chat/chat_completion_content_part.rb +23 -1
  24. data/lib/openai/models/chat/chat_completion_content_part_image.rb +23 -1
  25. data/lib/openai/models/chat/chat_completion_content_part_input_audio.rb +23 -1
  26. data/lib/openai/models/chat/chat_completion_content_part_text.rb +23 -1
  27. data/lib/openai/models/conversations/computer_screenshot_content.rb +23 -1
  28. data/lib/openai/models/decision_create_params.rb +802 -28
  29. data/lib/openai/models/decision_input_json.rb +45 -0
  30. data/lib/openai/models/decision_input_message.rb +304 -48
  31. data/lib/openai/models/decision_input_part.rb +4 -1
  32. data/lib/openai/models/decision_question_input_image.rb +54 -0
  33. data/lib/openai/models/decision_question_input_part.rb +23 -0
  34. data/lib/openai/models/decision_question_input_text.rb +21 -0
  35. data/lib/openai/models/image_edit_params.rb +20 -4
  36. data/lib/openai/models/image_generate_params.rb +23 -7
  37. data/lib/openai/models/image_model.rb +2 -0
  38. data/lib/openai/models/live/client_delegation.rb +20 -1
  39. data/lib/openai/models/live/client_event.rb +4 -4
  40. data/lib/openai/models/live/commentary_append_event.rb +1 -1
  41. data/lib/openai/models/live/decision_assistant_message.rb +154 -0
  42. data/lib/openai/models/live/decision_choice_option.rb +35 -0
  43. data/lib/openai/models/live/decision_developer_message.rb +70 -0
  44. data/lib/openai/models/live/decision_input_text.rb +26 -0
  45. data/lib/openai/models/live/decision_item_create_event.rb +490 -131
  46. data/lib/openai/models/live/decision_item_created_event.rb +486 -131
  47. data/lib/openai/models/live/decision_json_object.rb +10 -0
  48. data/lib/openai/models/live/decision_question.rb +172 -0
  49. data/lib/openai/models/live/decision_stored_assistant_message.rb +152 -0
  50. data/lib/openai/models/live/decision_stored_developer_message.rb +68 -0
  51. data/lib/openai/models/live/decision_stored_system_message.rb +68 -0
  52. data/lib/openai/models/live/decision_stored_user_message.rb +195 -0
  53. data/lib/openai/models/live/decision_system_message.rb +70 -0
  54. data/lib/openai/models/live/decision_trigger.rb +6 -185
  55. data/lib/openai/models/live/decision_user_message.rb +193 -0
  56. data/lib/openai/models/live/decisions_delegation_config.rb +5 -177
  57. data/lib/openai/models/live/decisions_delegation_update_config.rb +5 -184
  58. data/lib/openai/models/live/fork_client_event.rb +4 -4
  59. data/lib/openai/models/live/fork_server_event.rb +2 -2
  60. data/lib/openai/models/live/fork_session_config.rb +20 -1
  61. data/lib/openai/models/live/input_audio_muted_event.rb +3 -2
  62. data/lib/openai/models/live/input_audio_unmute_event.rb +2 -1
  63. data/lib/openai/models/live/input_audio_unmuted_event.rb +3 -2
  64. data/lib/openai/models/live/instructions_append_event.rb +5 -2
  65. data/lib/openai/models/live/media_session_config.rb +39 -2
  66. data/lib/openai/models/live/media_session_fork_config.rb +20 -1
  67. data/lib/openai/models/live/server_event.rb +2 -2
  68. data/lib/openai/models/live/session_accept_params.rb +39 -2
  69. data/lib/openai/models/live/session_config.rb +39 -2
  70. data/lib/openai/models/live/session_resource.rb +39 -2
  71. data/lib/openai/models/live/session_update_config.rb +41 -2
  72. data/lib/openai/models/live/sideband_client_event.rb +4 -4
  73. data/lib/openai/models/live/sideband_server_event.rb +2 -2
  74. data/lib/openai/models/live/thinking_append_event.rb +1 -1
  75. data/lib/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rb +10 -12
  76. data/lib/openai/models/realtime/realtime_error_event.rb +1 -1
  77. data/lib/openai/models/realtime/realtime_server_event.rb +1 -1
  78. data/lib/openai/models/realtime/realtime_translation_server_event.rb +1 -1
  79. data/lib/openai/models/responses/response_input_file.rb +23 -1
  80. data/lib/openai/models/responses/response_input_file_content.rb +23 -1
  81. data/lib/openai/models/responses/response_input_image.rb +23 -1
  82. data/lib/openai/models/responses/response_input_image_content.rb +23 -1
  83. data/lib/openai/models/responses/response_input_text.rb +23 -1
  84. data/lib/openai/models/responses/response_input_text_content.rb +23 -1
  85. data/lib/openai/models/responses/response_tool_search_output_item_param.rb +26 -15
  86. data/lib/openai/models/responses/tool.rb +26 -15
  87. data/lib/openai/models.rb +8 -0
  88. data/lib/openai/resources/beta/agents.rb +2 -2
  89. data/lib/openai/resources/beta/responses.rb +2 -2
  90. data/lib/openai/resources/decisions.rb +5 -6
  91. data/lib/openai/resources/images.rb +18 -6
  92. data/lib/openai/resources/live/forks.rb +2 -2
  93. data/lib/openai/resources/live/sideband.rb +2 -2
  94. data/lib/openai/resources/live.rb +2 -2
  95. data/lib/openai/resources/realtime/translations.rb +2 -2
  96. data/lib/openai/resources/realtime.rb +2 -2
  97. data/lib/openai/resources/responses.rb +2 -2
  98. data/lib/openai/version.rb +1 -1
  99. data/lib/openai.rb +16 -0
  100. data/rbi/openai/models/beta/agent.rbi +2 -1
  101. data/rbi/openai/models/beta/agent_create_params.rbi +6 -3
  102. data/rbi/openai/models/beta/agent_session.rbi +2 -1
  103. data/rbi/openai/models/beta/agent_tool.rbi +40 -1
  104. data/rbi/openai/models/beta/agent_tool_param.rbi +40 -1
  105. data/rbi/openai/models/beta/agent_update_params.rbi +6 -3
  106. data/rbi/openai/models/beta/agents/session_create_params.rbi +6 -3
  107. data/rbi/openai/models/beta/beta_response_input_file.rbi +31 -1
  108. data/rbi/openai/models/beta/beta_response_input_file_content.rbi +39 -1
  109. data/rbi/openai/models/beta/beta_response_input_image.rbi +31 -1
  110. data/rbi/openai/models/beta/beta_response_input_image_content.rbi +39 -1
  111. data/rbi/openai/models/beta/beta_response_input_text.rbi +31 -1
  112. data/rbi/openai/models/beta/beta_response_input_text_content.rbi +39 -1
  113. data/rbi/openai/models/beta/beta_response_item.rbi +58 -1
  114. data/rbi/openai/models/beta/beta_response_output_item.rbi +58 -1
  115. data/rbi/openai/models/beta/beta_response_tool_search_output_item_param.rbi +24 -15
  116. data/rbi/openai/models/beta/beta_tool.rbi +24 -15
  117. data/rbi/openai/models/beta/persisted_agent_tool.rbi +40 -1
  118. data/rbi/openai/models/beta/persisted_agent_tool_param.rbi +40 -1
  119. data/rbi/openai/models/chat/chat_completion_content_part.rbi +43 -1
  120. data/rbi/openai/models/chat/chat_completion_content_part_image.rbi +41 -1
  121. data/rbi/openai/models/chat/chat_completion_content_part_input_audio.rbi +46 -1
  122. data/rbi/openai/models/chat/chat_completion_content_part_text.rbi +39 -1
  123. data/rbi/openai/models/conversations/computer_screenshot_content.rbi +48 -1
  124. data/rbi/openai/models/decision_create_params.rbi +1273 -26
  125. data/rbi/openai/models/decision_input_json.rbi +75 -0
  126. data/rbi/openai/models/decision_input_message.rbi +455 -52
  127. data/rbi/openai/models/decision_input_part.rbi +2 -1
  128. data/rbi/openai/models/decision_question_input_image.rbi +82 -0
  129. data/rbi/openai/models/decision_question_input_part.rbi +25 -0
  130. data/rbi/openai/models/decision_question_input_text.rbi +49 -0
  131. data/rbi/openai/models/image_edit_params.rbi +12 -3
  132. data/rbi/openai/models/image_generate_params.rbi +15 -6
  133. data/rbi/openai/models/live/client_delegation.rbi +23 -1
  134. data/rbi/openai/models/live/commentary_append_event.rbi +1 -1
  135. data/rbi/openai/models/live/decision_assistant_message.rbi +247 -0
  136. data/rbi/openai/models/live/decision_choice_option.rbi +67 -0
  137. data/rbi/openai/models/live/decision_developer_message.rbi +109 -0
  138. data/rbi/openai/models/live/decision_input_text.rbi +55 -0
  139. data/rbi/openai/models/live/decision_item_create_event.rbi +765 -184
  140. data/rbi/openai/models/live/decision_item_created_event.rbi +737 -184
  141. data/rbi/openai/models/live/decision_json_object.rbi +16 -0
  142. data/rbi/openai/models/live/decision_question.rbi +300 -0
  143. data/rbi/openai/models/live/decision_stored_assistant_message.rbi +245 -0
  144. data/rbi/openai/models/live/decision_stored_developer_message.rbi +107 -0
  145. data/rbi/openai/models/live/decision_stored_system_message.rbi +107 -0
  146. data/rbi/openai/models/live/decision_stored_user_message.rbi +333 -0
  147. data/rbi/openai/models/live/decision_system_message.rbi +109 -0
  148. data/rbi/openai/models/live/decision_trigger.rbi +11 -320
  149. data/rbi/openai/models/live/decision_user_message.rbi +320 -0
  150. data/rbi/openai/models/live/decisions_delegation_config.rbi +10 -321
  151. data/rbi/openai/models/live/decisions_delegation_update_config.rbi +13 -324
  152. data/rbi/openai/models/live/fork_session_config.rbi +27 -1
  153. data/rbi/openai/models/live/input_audio_muted_event.rbi +3 -2
  154. data/rbi/openai/models/live/input_audio_unmute_event.rbi +2 -1
  155. data/rbi/openai/models/live/input_audio_unmuted_event.rbi +3 -2
  156. data/rbi/openai/models/live/instructions_append_event.rbi +5 -2
  157. data/rbi/openai/models/live/media_session_config.rbi +44 -2
  158. data/rbi/openai/models/live/media_session_fork_config.rbi +27 -1
  159. data/rbi/openai/models/live/session_accept_params.rbi +44 -2
  160. data/rbi/openai/models/live/session_config.rbi +44 -2
  161. data/rbi/openai/models/live/session_resource.rbi +44 -2
  162. data/rbi/openai/models/live/session_update_config.rbi +54 -2
  163. data/rbi/openai/models/live/thinking_append_event.rbi +1 -1
  164. data/rbi/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbi +10 -12
  165. data/rbi/openai/models/realtime/realtime_error_event.rbi +1 -1
  166. data/rbi/openai/models/responses/response_input_file.rbi +31 -1
  167. data/rbi/openai/models/responses/response_input_file_content.rbi +39 -1
  168. data/rbi/openai/models/responses/response_input_image.rbi +33 -1
  169. data/rbi/openai/models/responses/response_input_image_content.rbi +41 -1
  170. data/rbi/openai/models/responses/response_input_text.rbi +31 -1
  171. data/rbi/openai/models/responses/response_input_text_content.rbi +39 -1
  172. data/rbi/openai/models/responses/response_tool_search_output_item_param.rbi +24 -15
  173. data/rbi/openai/models/responses/tool.rbi +24 -15
  174. data/rbi/openai/models.rbi +8 -0
  175. data/rbi/openai/resources/beta/agents.rbi +4 -2
  176. data/rbi/openai/resources/beta/responses.rbi +8 -1
  177. data/rbi/openai/resources/decisions.rbi +4 -5
  178. data/rbi/openai/resources/images.rbi +18 -6
  179. data/rbi/openai/resources/live/forks.rbi +8 -1
  180. data/rbi/openai/resources/live/sideband.rbi +8 -1
  181. data/rbi/openai/resources/live.rbi +8 -1
  182. data/rbi/openai/resources/realtime/translations.rbi +8 -1
  183. data/rbi/openai/resources/realtime.rbi +8 -1
  184. data/rbi/openai/resources/responses.rbi +8 -1
  185. data/sig/openai/models/beta/agent_tool.rbs +14 -0
  186. data/sig/openai/models/beta/agent_tool_param.rbs +14 -0
  187. data/sig/openai/models/beta/beta_response_input_file.rbs +34 -3
  188. data/sig/openai/models/beta/beta_response_input_file_content.rbs +34 -3
  189. data/sig/openai/models/beta/beta_response_input_image.rbs +34 -3
  190. data/sig/openai/models/beta/beta_response_input_image_content.rbs +34 -3
  191. data/sig/openai/models/beta/beta_response_input_text.rbs +34 -3
  192. data/sig/openai/models/beta/beta_response_input_text_content.rbs +34 -3
  193. data/sig/openai/models/beta/beta_response_item.rbs +34 -3
  194. data/sig/openai/models/beta/beta_response_output_item.rbs +34 -3
  195. data/sig/openai/models/beta/beta_response_tool_search_output_item_param.rbs +24 -15
  196. data/sig/openai/models/beta/beta_tool.rbs +24 -15
  197. data/sig/openai/models/beta/persisted_agent_tool.rbs +14 -0
  198. data/sig/openai/models/beta/persisted_agent_tool_param.rbs +14 -0
  199. data/sig/openai/models/chat/chat_completion_content_part.rbs +34 -3
  200. data/sig/openai/models/chat/chat_completion_content_part_image.rbs +34 -3
  201. data/sig/openai/models/chat/chat_completion_content_part_input_audio.rbs +34 -3
  202. data/sig/openai/models/chat/chat_completion_content_part_text.rbs +34 -3
  203. data/sig/openai/models/conversations/computer_screenshot_content.rbs +34 -3
  204. data/sig/openai/models/decision_create_params.rbs +610 -24
  205. data/sig/openai/models/decision_input_json.rbs +34 -0
  206. data/sig/openai/models/decision_input_message.rbs +264 -35
  207. data/sig/openai/models/decision_input_part.rbs +3 -1
  208. data/sig/openai/models/decision_question_input_image.rbs +51 -0
  209. data/sig/openai/models/decision_question_input_part.rbs +14 -0
  210. data/sig/openai/models/decision_question_input_text.rbs +15 -0
  211. data/sig/openai/models/image_edit_params.rbs +8 -2
  212. data/sig/openai/models/image_generate_params.rbs +10 -4
  213. data/sig/openai/models/live/client_delegation.rbs +30 -3
  214. data/sig/openai/models/live/decision_assistant_message.rbs +134 -0
  215. data/sig/openai/models/live/decision_choice_option.rbs +37 -0
  216. data/sig/openai/models/live/decision_developer_message.rbs +67 -0
  217. data/sig/openai/models/live/decision_input_text.rbs +20 -0
  218. data/sig/openai/models/live/decision_item_create_event.rbs +413 -131
  219. data/sig/openai/models/live/decision_item_created_event.rbs +401 -131
  220. data/sig/openai/models/live/decision_json_object.rbs +9 -0
  221. data/sig/openai/models/live/decision_question.rbs +164 -0
  222. data/sig/openai/models/live/decision_stored_assistant_message.rbs +131 -0
  223. data/sig/openai/models/live/decision_stored_developer_message.rbs +64 -0
  224. data/sig/openai/models/live/decision_stored_system_message.rbs +64 -0
  225. data/sig/openai/models/live/decision_stored_user_message.rbs +177 -0
  226. data/sig/openai/models/live/decision_system_message.rbs +67 -0
  227. data/sig/openai/models/live/decision_trigger.rbs +8 -171
  228. data/sig/openai/models/live/decision_user_message.rbs +180 -0
  229. data/sig/openai/models/live/decisions_delegation_config.rbs +6 -167
  230. data/sig/openai/models/live/decisions_delegation_update_config.rbs +8 -169
  231. data/sig/openai/models/live/fork_session_config.rbs +26 -0
  232. data/sig/openai/models/live/media_session_config.rbs +53 -4
  233. data/sig/openai/models/live/media_session_fork_config.rbs +26 -0
  234. data/sig/openai/models/live/session_accept_params.rbs +53 -4
  235. data/sig/openai/models/live/session_config.rbs +53 -4
  236. data/sig/openai/models/live/session_resource.rbs +53 -4
  237. data/sig/openai/models/live/session_update_config.rbs +52 -0
  238. data/sig/openai/models/realtime/conversation_item_input_audio_transcription_delta_event.rbs +10 -12
  239. data/sig/openai/models/responses/response_input_file.rbs +34 -3
  240. data/sig/openai/models/responses/response_input_file_content.rbs +34 -3
  241. data/sig/openai/models/responses/response_input_image.rbs +34 -3
  242. data/sig/openai/models/responses/response_input_image_content.rbs +34 -3
  243. data/sig/openai/models/responses/response_input_text.rbs +34 -3
  244. data/sig/openai/models/responses/response_input_text_content.rbs +34 -3
  245. data/sig/openai/models/responses/response_tool_search_output_item_param.rbs +24 -15
  246. data/sig/openai/models/responses/tool.rbs +24 -15
  247. data/sig/openai/models.rbs +9 -1
  248. data/sig/openai/resources/beta/responses.rbs +2 -1
  249. data/sig/openai/resources/live/forks.rbs +2 -1
  250. data/sig/openai/resources/live/sideband.rbs +2 -1
  251. data/sig/openai/resources/live.rbs +2 -1
  252. data/sig/openai/resources/realtime/translations.rbs +2 -1
  253. data/sig/openai/resources/realtime.rbs +2 -1
  254. data/sig/openai/resources/responses.rbs +2 -1
  255. metadata +49 -1
@@ -8,17 +8,16 @@ module OpenAI
8
8
  #
9
9
  # @overload create(input:, model:, questions:, prompt_cache_key: nil, prompt_cache_options: nil, safety_identifier: nil, request_options: {})
10
10
  #
11
- # @param input [String, Array<OpenAI::Models::DecisionInputMessage>]
12
- # The text or images to evaluate for every question. Provide a text string or user
13
- # messages containing text and images. Images can be base64 data URLs or publicly
14
- # accessible HTTP(S) URLs; at most 128 images are allowed across all messages in
15
- # one request. Files, audio, tools, and item references are not supported.
11
+ # @param input [String, Array<OpenAI::Models::decision_input_message, OpenAI::Models::DecisionCreateParams::Input::UnionMember1::DecisionInputDeveloperMessage, OpenAI::Models::DecisionCreateParams::Input::UnionMember1::DecisionInputSystemMessage, OpenAI::Models::DecisionCreateParams::Input::UnionMember1::DecisionInputAssistantMessage, OpenAI::Models::DecisionCreateParams::Input::UnionMember1::FunctionCall, OpenAI::Models::DecisionCreateParams::Input::UnionMember1::FunctionCallOutput, OpenAI::Models::DecisionCreateParams::Input::UnionMember1::CustomToolCall, OpenAI::Models::DecisionCreateParams::Input::UnionMember1::CustomToolCallOutput>]
12
+ # The input to evaluate for every question. Provide a text string or an ordered
13
+ # array of messages, function calls and outputs, or custom tool calls and outputs.
14
+ # Each tool output must identify a matching call by call ID.
16
15
  #
17
16
  # @param model [String]
18
17
  # The model to use. Only `gpt-6-luna` is supported.
19
18
  #
20
19
  # @param questions [Array<OpenAI::Models::DecisionCreateParams::Question::Predicate, OpenAI::Models::DecisionCreateParams::Question::Choice, OpenAI::Models::DecisionCreateParams::Question::Score>]
21
- # Ask 1–200 questions about the input. Each question can be a predicate, choice,
20
+ # Ask 1–400 questions about the input. Each question can be a predicate, choice,
22
21
  # or score. Answers come back in the same order.
23
22
  #
24
23
  # @param prompt_cache_key [String, nil]
@@ -120,12 +120,15 @@ module OpenAI
120
120
  # content type.
121
121
  #
122
122
  # @param model [String, Symbol, OpenAI::Models::ImageModel, nil]
123
- # The GPT image model to use for image editing (`gpt-image-1`, `gpt-image-1-mini`,
123
+ # The GPT image model to use for image editing (`gpt-image-1-mini`,
124
124
  # `gpt-image-1.5`, `gpt-image-2`, `gpt-image-2-2026-04-21`,
125
125
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
126
126
  # `gpt-image-2.5-flare`, `gpt-image-2.5-flare-2026-09-08`, or
127
127
  # `chatgpt-image-latest`).
128
128
  #
129
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
130
+ # `gpt-image-2.5-flare` instead.
131
+ #
129
132
  # @param n [Integer, nil]
130
133
  # The number of images to generate. Must be between 1 and 10.
131
134
  #
@@ -265,12 +268,15 @@ module OpenAI
265
268
  # content type.
266
269
  #
267
270
  # @param model [String, Symbol, OpenAI::Models::ImageModel, nil]
268
- # The GPT image model to use for image editing (`gpt-image-1`, `gpt-image-1-mini`,
271
+ # The GPT image model to use for image editing (`gpt-image-1-mini`,
269
272
  # `gpt-image-1.5`, `gpt-image-2`, `gpt-image-2-2026-04-21`,
270
273
  # `gpt-image-2.5-sunburst`, `gpt-image-2.5-sunburst-2026-09-08`,
271
274
  # `gpt-image-2.5-flare`, `gpt-image-2.5-flare-2026-09-08`, or
272
275
  # `chatgpt-image-latest`).
273
276
  #
277
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
278
+ # `gpt-image-2.5-flare` instead.
279
+ #
274
280
  # @param n [Integer, nil]
275
281
  # The number of images to generate. Must be between 1 and 10.
276
282
  #
@@ -383,11 +389,14 @@ module OpenAI
383
389
  #
384
390
  # @param model [String, Symbol, OpenAI::Models::ImageModel, nil]
385
391
  # The GPT image model to use for image generation. Specify a model explicitly.
386
- # Supported models include `gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
387
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
392
+ # Supported models include `gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
393
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
388
394
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
389
395
  # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`.
390
396
  #
397
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
398
+ # `gpt-image-2.5-flare` instead.
399
+ #
391
400
  # @param moderation [Symbol, OpenAI::Models::ImageGenerateParams::Moderation, nil]
392
401
  # Control the content-moderation level for images generated by the GPT image
393
402
  # models. Must be either `low` for less restrictive filtering or `auto` (default
@@ -502,11 +511,14 @@ module OpenAI
502
511
  #
503
512
  # @param model [String, Symbol, OpenAI::Models::ImageModel, nil]
504
513
  # The GPT image model to use for image generation. Specify a model explicitly.
505
- # Supported models include `gpt-image-1`, `gpt-image-1-mini`, `gpt-image-1.5`,
506
- # `gpt-image-2`, `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
514
+ # Supported models include `gpt-image-1-mini`, `gpt-image-1.5`, `gpt-image-2`,
515
+ # `gpt-image-2-2026-04-21`, `gpt-image-2.5-sunburst`,
507
516
  # `gpt-image-2.5-sunburst-2026-09-08`, `gpt-image-2.5-flare`,
508
517
  # `gpt-image-2.5-flare-2026-09-08`, and `chatgpt-image-latest`.
509
518
  #
519
+ # `gpt-image-1` was shut down on October 23, 2026. Use `gpt-image-2.5-sunburst` or
520
+ # `gpt-image-2.5-flare` instead.
521
+ #
510
522
  # @param moderation [Symbol, OpenAI::Models::ImageGenerateParams::Moderation, nil]
511
523
  # Control the content-moderation level for images generated by the GPT image
512
524
  # models. Must be either `low` for less restrictive filtering or `auto` (default
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../../helpers/websocket/resource"
3
+ require_relative "../../helpers/websocket/typed_resource"
4
4
 
5
5
  module OpenAI
6
6
  module Resources
7
7
  class Live
8
8
  class Forks
9
- include OpenAI::WebSocket::Resource
9
+ include OpenAI::WebSocket::TypedResource
10
10
 
11
11
  # @api private
12
12
  def __websocket_request(session_id, query: {})
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../../helpers/websocket/resource"
3
+ require_relative "../../helpers/websocket/typed_resource"
4
4
 
5
5
  module OpenAI
6
6
  module Resources
7
7
  class Live
8
8
  class Sideband
9
- include OpenAI::WebSocket::Resource
9
+ include OpenAI::WebSocket::TypedResource
10
10
 
11
11
  # @api private
12
12
  def __websocket_request(session_id, query: {})
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../helpers/websocket/resource"
3
+ require_relative "../helpers/websocket/typed_resource"
4
4
 
5
5
  module OpenAI
6
6
  module Resources
7
7
  class Live
8
- include OpenAI::WebSocket::Resource
8
+ include OpenAI::WebSocket::TypedResource
9
9
 
10
10
  # @api private
11
11
  def __websocket_request(query: {})
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../../helpers/websocket/resource"
3
+ require_relative "../../helpers/websocket/typed_resource"
4
4
 
5
5
  module OpenAI
6
6
  module Resources
7
7
  class Realtime
8
8
  class Translations
9
- include OpenAI::WebSocket::Resource
9
+ include OpenAI::WebSocket::TypedResource
10
10
 
11
11
  # @api private
12
12
  def __websocket_request(query: {})
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "../helpers/websocket/resource"
3
+ require_relative "../helpers/websocket/typed_resource"
4
4
 
5
5
  module OpenAI
6
6
  module Resources
7
7
  class Realtime
8
- include OpenAI::WebSocket::Resource
8
+ include OpenAI::WebSocket::TypedResource
9
9
 
10
10
  # @api private
11
11
  def __websocket_request(query: {})
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "../helpers/streaming/response_stream_resource"
4
- require_relative "../helpers/websocket/resource"
4
+ require_relative "../helpers/websocket/typed_resource"
5
5
  require_relative "../helpers/structured_output/response_parser"
6
6
 
7
7
  module OpenAI
8
8
  module Resources
9
9
  # Create and manage model responses.
10
10
  class Responses
11
- include OpenAI::WebSocket::Resource
11
+ include OpenAI::WebSocket::TypedResource
12
12
 
13
13
  # @api private
14
14
  def __websocket_request(query: {})
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.110.0"
4
+ VERSION = "0.112.0"
5
5
  end
data/lib/openai.rb CHANGED
@@ -980,10 +980,14 @@ require_relative "openai/models/custom_tool_input_format"
980
980
  require_relative "openai/models/decision"
981
981
  require_relative "openai/models/decision_create_params"
982
982
  require_relative "openai/models/decision_input_image"
983
+ require_relative "openai/models/decision_input_json"
983
984
  require_relative "openai/models/decision_input_message"
984
985
  require_relative "openai/models/decision_input_part"
985
986
  require_relative "openai/models/decision_input_text"
986
987
  require_relative "openai/models/decision_prompt_cache_breakpoint"
988
+ require_relative "openai/models/decision_question_input_image"
989
+ require_relative "openai/models/decision_question_input_part"
990
+ require_relative "openai/models/decision_question_input_text"
987
991
  require_relative "openai/models/deleted_skill"
988
992
  require_relative "openai/models/embedding"
989
993
  require_relative "openai/models/embedding_create_params"
@@ -1089,15 +1093,27 @@ require_relative "openai/models/live/commentary_appended_event"
1089
1093
  require_relative "openai/models/live/commentary_append_event"
1090
1094
  require_relative "openai/models/live/custom_voice"
1091
1095
  require_relative "openai/models/live/data_channel_config"
1096
+ require_relative "openai/models/live/decision_assistant_message"
1097
+ require_relative "openai/models/live/decision_choice_option"
1092
1098
  require_relative "openai/models/live/decision_create_event"
1099
+ require_relative "openai/models/live/decision_developer_message"
1093
1100
  require_relative "openai/models/live/decision_event"
1101
+ require_relative "openai/models/live/decision_input_text"
1094
1102
  require_relative "openai/models/live/decision_item_created_event"
1095
1103
  require_relative "openai/models/live/decision_item_create_event"
1096
1104
  require_relative "openai/models/live/decision_item_deleted_event"
1097
1105
  require_relative "openai/models/live/decision_item_delete_event"
1106
+ require_relative "openai/models/live/decision_json_object"
1107
+ require_relative "openai/models/live/decision_question"
1098
1108
  require_relative "openai/models/live/decisions_delegation_config"
1099
1109
  require_relative "openai/models/live/decisions_delegation_update_config"
1110
+ require_relative "openai/models/live/decision_stored_assistant_message"
1111
+ require_relative "openai/models/live/decision_stored_developer_message"
1112
+ require_relative "openai/models/live/decision_stored_system_message"
1113
+ require_relative "openai/models/live/decision_stored_user_message"
1114
+ require_relative "openai/models/live/decision_system_message"
1100
1115
  require_relative "openai/models/live/decision_trigger"
1116
+ require_relative "openai/models/live/decision_user_message"
1101
1117
  require_relative "openai/models/live/delegation_created_event"
1102
1118
  require_relative "openai/models/live/error"
1103
1119
  require_relative "openai/models/live/error_event"
@@ -107,7 +107,8 @@ module OpenAI
107
107
  OpenAI::Beta::PersistedAgentTool::ProgrammaticToolCalling::OrHash,
108
108
  OpenAI::Beta::PersistedAgentTool::Mcp::OrHash,
109
109
  OpenAI::Beta::PersistedAgentTool::WebSearch::OrHash,
110
- OpenAI::Beta::PersistedAgentTool::ComputerUse::OrHash
110
+ OpenAI::Beta::PersistedAgentTool::ComputerUse::OrHash,
111
+ OpenAI::Beta::PersistedAgentTool::Automations::OrHash
111
112
  )
112
113
  ],
113
114
 
@@ -74,7 +74,8 @@ module OpenAI
74
74
  OpenAI::Beta::PersistedAgentToolParam::ProgrammaticToolCalling,
75
75
  OpenAI::Beta::PersistedAgentToolParam::Mcp,
76
76
  OpenAI::Beta::PersistedAgentToolParam::WebSearch,
77
- OpenAI::Beta::PersistedAgentToolParam::ComputerUse
77
+ OpenAI::Beta::PersistedAgentToolParam::ComputerUse,
78
+ OpenAI::Beta::PersistedAgentToolParam::Automations
78
79
  )
79
80
  ]
80
81
  )
@@ -109,7 +110,8 @@ module OpenAI
109
110
  OpenAI::Beta::PersistedAgentToolParam::ProgrammaticToolCalling::OrHash,
110
111
  OpenAI::Beta::PersistedAgentToolParam::Mcp::OrHash,
111
112
  OpenAI::Beta::PersistedAgentToolParam::WebSearch::OrHash,
112
- OpenAI::Beta::PersistedAgentToolParam::ComputerUse::OrHash
113
+ OpenAI::Beta::PersistedAgentToolParam::ComputerUse::OrHash,
114
+ OpenAI::Beta::PersistedAgentToolParam::Automations::OrHash
113
115
  )
114
116
  ]
115
117
  ),
@@ -175,7 +177,8 @@ module OpenAI
175
177
  OpenAI::Beta::PersistedAgentToolParam::ProgrammaticToolCalling,
176
178
  OpenAI::Beta::PersistedAgentToolParam::Mcp,
177
179
  OpenAI::Beta::PersistedAgentToolParam::WebSearch,
178
- OpenAI::Beta::PersistedAgentToolParam::ComputerUse
180
+ OpenAI::Beta::PersistedAgentToolParam::ComputerUse,
181
+ OpenAI::Beta::PersistedAgentToolParam::Automations
179
182
  )
180
183
  ]
181
184
  ),
@@ -267,7 +267,8 @@ module OpenAI
267
267
  OpenAI::Beta::AgentTool::ProgrammaticToolCalling::OrHash,
268
268
  OpenAI::Beta::AgentTool::Mcp::OrHash,
269
269
  OpenAI::Beta::AgentTool::WebSearch::OrHash,
270
- OpenAI::Beta::AgentTool::ComputerUse::OrHash
270
+ OpenAI::Beta::AgentTool::ComputerUse::OrHash,
271
+ OpenAI::Beta::AgentTool::Automations::OrHash
271
272
  )
272
273
  ]
273
274
  )
@@ -15,7 +15,8 @@ module OpenAI
15
15
  OpenAI::Beta::AgentTool::ProgrammaticToolCalling,
16
16
  OpenAI::Beta::AgentTool::Mcp,
17
17
  OpenAI::Beta::AgentTool::WebSearch,
18
- OpenAI::Beta::AgentTool::ComputerUse
18
+ OpenAI::Beta::AgentTool::ComputerUse,
19
+ OpenAI::Beta::AgentTool::Automations
19
20
  )
20
21
  end
21
22
 
@@ -503,6 +504,44 @@ module OpenAI
503
504
 
504
505
  end
505
506
 
507
+ class Automations < OpenAI::Internal::Type::BaseModel
508
+ OrHash = T.type_alias do
509
+ T.any(
510
+ OpenAI::Beta::AgentTool::Automations,
511
+ OpenAI::Internal::AnyHash
512
+ )
513
+ end
514
+
515
+ # The type of the object. Always `automations`.
516
+ sig { returns(Symbol) }
517
+ attr_accessor :type
518
+
519
+ # Lets the agent manage its own scheduled wakeups.
520
+ sig do
521
+ params(
522
+
523
+ type: Symbol
524
+ )
525
+ .returns(T.attached_class)
526
+ end
527
+ def self.new(
528
+
529
+ # The type of the object. Always `automations`.
530
+
531
+ type: :automations
532
+ )
533
+ end
534
+
535
+ sig do
536
+ override.returns(
537
+ {type: Symbol}
538
+ )
539
+ end
540
+ def to_hash
541
+ end
542
+
543
+ end
544
+
506
545
  sig { override.returns(T::Array[OpenAI::Beta::AgentTool::Variants]) }
507
546
  def self.variants
508
547
  end
@@ -16,7 +16,8 @@ module OpenAI
16
16
  OpenAI::Beta::AgentToolParam::ProgrammaticToolCalling,
17
17
  OpenAI::Beta::AgentToolParam::Mcp,
18
18
  OpenAI::Beta::AgentToolParam::WebSearch,
19
- OpenAI::Beta::AgentToolParam::ComputerUse
19
+ OpenAI::Beta::AgentToolParam::ComputerUse,
20
+ OpenAI::Beta::AgentToolParam::Automations
20
21
  )
21
22
  end
22
23
 
@@ -575,6 +576,44 @@ module OpenAI
575
576
 
576
577
  end
577
578
 
579
+ class Automations < OpenAI::Internal::Type::BaseModel
580
+ OrHash = T.type_alias do
581
+ T.any(
582
+ OpenAI::Beta::AgentToolParam::Automations,
583
+ OpenAI::Internal::AnyHash
584
+ )
585
+ end
586
+
587
+ # The type of the object. Always `automations`.
588
+ sig { returns(Symbol) }
589
+ attr_accessor :type
590
+
591
+ # Lets the agent manage its own scheduled wakeups.
592
+ sig do
593
+ params(
594
+
595
+ type: Symbol
596
+ )
597
+ .returns(T.attached_class)
598
+ end
599
+ def self.new(
600
+
601
+ # The type of the object. Always `automations`.
602
+
603
+ type: :automations
604
+ )
605
+ end
606
+
607
+ sig do
608
+ override.returns(
609
+ {type: Symbol}
610
+ )
611
+ end
612
+ def to_hash
613
+ end
614
+
615
+ end
616
+
578
617
  sig { override.returns(T::Array[OpenAI::Beta::AgentToolParam::Variants]) }
579
618
  def self.variants
580
619
  end
@@ -80,7 +80,8 @@ module OpenAI
80
80
  OpenAI::Beta::PersistedAgentToolParam::ProgrammaticToolCalling,
81
81
  OpenAI::Beta::PersistedAgentToolParam::Mcp,
82
82
  OpenAI::Beta::PersistedAgentToolParam::WebSearch,
83
- OpenAI::Beta::PersistedAgentToolParam::ComputerUse
83
+ OpenAI::Beta::PersistedAgentToolParam::ComputerUse,
84
+ OpenAI::Beta::PersistedAgentToolParam::Automations
84
85
  )
85
86
  ]
86
87
  )
@@ -117,7 +118,8 @@ module OpenAI
117
118
  OpenAI::Beta::PersistedAgentToolParam::ProgrammaticToolCalling::OrHash,
118
119
  OpenAI::Beta::PersistedAgentToolParam::Mcp::OrHash,
119
120
  OpenAI::Beta::PersistedAgentToolParam::WebSearch::OrHash,
120
- OpenAI::Beta::PersistedAgentToolParam::ComputerUse::OrHash
121
+ OpenAI::Beta::PersistedAgentToolParam::ComputerUse::OrHash,
122
+ OpenAI::Beta::PersistedAgentToolParam::Automations::OrHash
121
123
  )
122
124
  ]
123
125
  ),
@@ -186,7 +188,8 @@ module OpenAI
186
188
  OpenAI::Beta::PersistedAgentToolParam::ProgrammaticToolCalling,
187
189
  OpenAI::Beta::PersistedAgentToolParam::Mcp,
188
190
  OpenAI::Beta::PersistedAgentToolParam::WebSearch,
189
- OpenAI::Beta::PersistedAgentToolParam::ComputerUse
191
+ OpenAI::Beta::PersistedAgentToolParam::ComputerUse,
192
+ OpenAI::Beta::PersistedAgentToolParam::Automations
190
193
  )
191
194
  ]
192
195
  ),
@@ -212,7 +212,8 @@ module OpenAI
212
212
  OpenAI::Beta::AgentToolParam::ProgrammaticToolCalling,
213
213
  OpenAI::Beta::AgentToolParam::Mcp,
214
214
  OpenAI::Beta::AgentToolParam::WebSearch,
215
- OpenAI::Beta::AgentToolParam::ComputerUse
215
+ OpenAI::Beta::AgentToolParam::ComputerUse,
216
+ OpenAI::Beta::AgentToolParam::Automations
216
217
  )
217
218
  ]
218
219
  )
@@ -245,7 +246,8 @@ module OpenAI
245
246
  OpenAI::Beta::AgentToolParam::ProgrammaticToolCalling::OrHash,
246
247
  OpenAI::Beta::AgentToolParam::Mcp::OrHash,
247
248
  OpenAI::Beta::AgentToolParam::WebSearch::OrHash,
248
- OpenAI::Beta::AgentToolParam::ComputerUse::OrHash
249
+ OpenAI::Beta::AgentToolParam::ComputerUse::OrHash,
250
+ OpenAI::Beta::AgentToolParam::Automations::OrHash
249
251
  )
250
252
  ]
251
253
  )
@@ -299,7 +301,8 @@ module OpenAI
299
301
  OpenAI::Beta::AgentToolParam::ProgrammaticToolCalling,
300
302
  OpenAI::Beta::AgentToolParam::Mcp,
301
303
  OpenAI::Beta::AgentToolParam::WebSearch,
302
- OpenAI::Beta::AgentToolParam::ComputerUse
304
+ OpenAI::Beta::AgentToolParam::ComputerUse,
305
+ OpenAI::Beta::AgentToolParam::Automations
303
306
  )
304
307
  ]
305
308
  )
@@ -167,18 +167,30 @@ module OpenAI
167
167
  sig { returns(Symbol) }
168
168
  attr_accessor :mode
169
169
 
170
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
171
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseInputFile::PromptCacheBreakpoint::Ttl::OrSymbol)) }
172
+ attr_reader :ttl
173
+
174
+ sig { params(ttl: OpenAI::Beta::BetaResponseInputFile::PromptCacheBreakpoint::Ttl::OrSymbol).void }
175
+ attr_writer :ttl
176
+
170
177
  # Marks the exact end of a reusable prompt prefix. The breakpoint inherits its TTL
171
178
  # from the request's `prompt_cache_options.ttl`; the boundary is not rounded to a
172
179
  # token block.
173
180
  sig do
174
181
  params(
175
182
 
183
+ ttl: OpenAI::Beta::BetaResponseInputFile::PromptCacheBreakpoint::Ttl::OrSymbol,
184
+
176
185
  mode: Symbol
177
186
  )
178
187
  .returns(T.attached_class)
179
188
  end
180
189
  def self.new(
181
190
 
191
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
192
+ ttl: nil,
193
+
182
194
  # The breakpoint mode. Always `explicit`.
183
195
 
184
196
  mode: :explicit
@@ -187,12 +199,30 @@ module OpenAI
187
199
 
188
200
  sig do
189
201
  override.returns(
190
- {mode: Symbol}
202
+ {mode: Symbol, ttl: OpenAI::Beta::BetaResponseInputFile::PromptCacheBreakpoint::Ttl::OrSymbol}
191
203
  )
192
204
  end
193
205
  def to_hash
194
206
  end
195
207
 
208
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
209
+ module Ttl
210
+ extend OpenAI::Internal::Type::Enum
211
+
212
+ TaggedSymbol = T.type_alias {
213
+ T.all(Symbol, OpenAI::Beta::BetaResponseInputFile::PromptCacheBreakpoint::Ttl)
214
+ }
215
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
216
+
217
+ TTL_30M = T.let(:"30m", OpenAI::Beta::BetaResponseInputFile::PromptCacheBreakpoint::Ttl::TaggedSymbol)
218
+ TTL_12H = T.let(:"12h", OpenAI::Beta::BetaResponseInputFile::PromptCacheBreakpoint::Ttl::TaggedSymbol)
219
+
220
+ sig {
221
+ override.returns(T::Array[OpenAI::Beta::BetaResponseInputFile::PromptCacheBreakpoint::Ttl::TaggedSymbol])
222
+ }
223
+ def self.values
224
+ end
225
+ end
196
226
  end
197
227
 
198
228
  end
@@ -165,18 +165,30 @@ module OpenAI
165
165
  sig { returns(Symbol) }
166
166
  attr_accessor :mode
167
167
 
168
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
169
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseInputFileContent::PromptCacheBreakpoint::Ttl::OrSymbol)) }
170
+ attr_reader :ttl
171
+
172
+ sig { params(ttl: OpenAI::Beta::BetaResponseInputFileContent::PromptCacheBreakpoint::Ttl::OrSymbol).void }
173
+ attr_writer :ttl
174
+
168
175
  # Marks the exact end of a reusable prompt prefix. The breakpoint inherits its TTL
169
176
  # from the request's `prompt_cache_options.ttl`; the boundary is not rounded to a
170
177
  # token block.
171
178
  sig do
172
179
  params(
173
180
 
181
+ ttl: OpenAI::Beta::BetaResponseInputFileContent::PromptCacheBreakpoint::Ttl::OrSymbol,
182
+
174
183
  mode: Symbol
175
184
  )
176
185
  .returns(T.attached_class)
177
186
  end
178
187
  def self.new(
179
188
 
189
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
190
+ ttl: nil,
191
+
180
192
  # The breakpoint mode. Always `explicit`.
181
193
 
182
194
  mode: :explicit
@@ -185,12 +197,38 @@ module OpenAI
185
197
 
186
198
  sig do
187
199
  override.returns(
188
- {mode: Symbol}
200
+ {mode: Symbol, ttl: OpenAI::Beta::BetaResponseInputFileContent::PromptCacheBreakpoint::Ttl::OrSymbol}
189
201
  )
190
202
  end
191
203
  def to_hash
192
204
  end
193
205
 
206
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
207
+ module Ttl
208
+ extend OpenAI::Internal::Type::Enum
209
+
210
+ TaggedSymbol = T.type_alias {
211
+ T.all(Symbol, OpenAI::Beta::BetaResponseInputFileContent::PromptCacheBreakpoint::Ttl)
212
+ }
213
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
214
+
215
+ TTL_30M = T.let(
216
+ :"30m",
217
+ OpenAI::Beta::BetaResponseInputFileContent::PromptCacheBreakpoint::Ttl::TaggedSymbol
218
+ )
219
+ TTL_12H = T.let(
220
+ :"12h",
221
+ OpenAI::Beta::BetaResponseInputFileContent::PromptCacheBreakpoint::Ttl::TaggedSymbol
222
+ )
223
+
224
+ sig {
225
+ override.returns(
226
+ T::Array[OpenAI::Beta::BetaResponseInputFileContent::PromptCacheBreakpoint::Ttl::TaggedSymbol]
227
+ )
228
+ }
229
+ def self.values
230
+ end
231
+ end
194
232
  end
195
233
 
196
234
  end
@@ -130,18 +130,30 @@ module OpenAI
130
130
  sig { returns(Symbol) }
131
131
  attr_accessor :mode
132
132
 
133
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
134
+ sig { returns(T.nilable(OpenAI::Beta::BetaResponseInputImage::PromptCacheBreakpoint::Ttl::OrSymbol)) }
135
+ attr_reader :ttl
136
+
137
+ sig { params(ttl: OpenAI::Beta::BetaResponseInputImage::PromptCacheBreakpoint::Ttl::OrSymbol).void }
138
+ attr_writer :ttl
139
+
133
140
  # Marks the exact end of a reusable prompt prefix. The breakpoint inherits its TTL
134
141
  # from the request's `prompt_cache_options.ttl`; the boundary is not rounded to a
135
142
  # token block.
136
143
  sig do
137
144
  params(
138
145
 
146
+ ttl: OpenAI::Beta::BetaResponseInputImage::PromptCacheBreakpoint::Ttl::OrSymbol,
147
+
139
148
  mode: Symbol
140
149
  )
141
150
  .returns(T.attached_class)
142
151
  end
143
152
  def self.new(
144
153
 
154
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
155
+ ttl: nil,
156
+
145
157
  # The breakpoint mode. Always `explicit`.
146
158
 
147
159
  mode: :explicit
@@ -150,12 +162,30 @@ module OpenAI
150
162
 
151
163
  sig do
152
164
  override.returns(
153
- {mode: Symbol}
165
+ {mode: Symbol, ttl: OpenAI::Beta::BetaResponseInputImage::PromptCacheBreakpoint::Ttl::OrSymbol}
154
166
  )
155
167
  end
156
168
  def to_hash
157
169
  end
158
170
 
171
+ # The minimum lifetime of this cache breakpoint. Defaults to the request TTL.
172
+ module Ttl
173
+ extend OpenAI::Internal::Type::Enum
174
+
175
+ TaggedSymbol = T.type_alias {
176
+ T.all(Symbol, OpenAI::Beta::BetaResponseInputImage::PromptCacheBreakpoint::Ttl)
177
+ }
178
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
179
+
180
+ TTL_30M = T.let(:"30m", OpenAI::Beta::BetaResponseInputImage::PromptCacheBreakpoint::Ttl::TaggedSymbol)
181
+ TTL_12H = T.let(:"12h", OpenAI::Beta::BetaResponseInputImage::PromptCacheBreakpoint::Ttl::TaggedSymbol)
182
+
183
+ sig {
184
+ override.returns(T::Array[OpenAI::Beta::BetaResponseInputImage::PromptCacheBreakpoint::Ttl::TaggedSymbol])
185
+ }
186
+ def self.values
187
+ end
188
+ end
159
189
  end
160
190
 
161
191
  end