openai 0.29.0 → 0.31.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 (222) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/README.md +1 -1
  4. data/lib/openai/client.rb +4 -0
  5. data/lib/openai/internal/conversation_cursor_page.rb +2 -2
  6. data/lib/openai/models/all_models.rb +2 -0
  7. data/lib/openai/models/beta/assistant_create_params.rb +3 -0
  8. data/lib/openai/models/beta/assistant_update_params.rb +3 -0
  9. data/lib/openai/models/beta/chatkit/chat_session.rb +94 -0
  10. data/lib/openai/models/beta/chatkit/chat_session_automatic_thread_titling.rb +22 -0
  11. data/lib/openai/models/beta/chatkit/chat_session_chatkit_configuration.rb +38 -0
  12. data/lib/openai/models/beta/chatkit/chat_session_chatkit_configuration_param.rb +125 -0
  13. data/lib/openai/models/beta/chatkit/chat_session_expires_after_param.rb +30 -0
  14. data/lib/openai/models/beta/chatkit/chat_session_file_upload.rb +38 -0
  15. data/lib/openai/models/beta/chatkit/chat_session_history.rb +34 -0
  16. data/lib/openai/models/beta/chatkit/chat_session_rate_limits.rb +22 -0
  17. data/lib/openai/models/beta/chatkit/chat_session_rate_limits_param.rb +22 -0
  18. data/lib/openai/models/beta/chatkit/chat_session_status.rb +20 -0
  19. data/lib/openai/models/beta/chatkit/chat_session_workflow_param.rb +80 -0
  20. data/lib/openai/models/beta/chatkit/chatkit_attachment.rb +69 -0
  21. data/lib/openai/models/beta/chatkit/chatkit_response_output_text.rb +143 -0
  22. data/lib/openai/models/beta/chatkit/chatkit_thread.rb +145 -0
  23. data/lib/openai/models/beta/chatkit/chatkit_thread_assistant_message_item.rb +65 -0
  24. data/lib/openai/models/beta/chatkit/chatkit_thread_item_list.rb +374 -0
  25. data/lib/openai/models/beta/chatkit/chatkit_thread_user_message_item.rb +183 -0
  26. data/lib/openai/models/beta/chatkit/chatkit_widget_item.rb +64 -0
  27. data/lib/openai/models/beta/chatkit/session_cancel_params.rb +18 -0
  28. data/lib/openai/models/beta/chatkit/session_create_params.rb +63 -0
  29. data/lib/openai/models/beta/chatkit/thread_delete_params.rb +18 -0
  30. data/lib/openai/models/beta/chatkit/thread_delete_response.rb +39 -0
  31. data/lib/openai/models/beta/chatkit/thread_list_items_params.rb +66 -0
  32. data/lib/openai/models/beta/chatkit/thread_list_params.rb +75 -0
  33. data/lib/openai/models/beta/chatkit/thread_retrieve_params.rb +18 -0
  34. data/lib/openai/models/beta/chatkit_upload_file_params.rb +28 -0
  35. data/lib/openai/models/beta/chatkit_upload_file_response.rb +25 -0
  36. data/lib/openai/models/beta/chatkit_workflow.rb +78 -0
  37. data/lib/openai/models/beta/file_part.rb +56 -0
  38. data/lib/openai/models/beta/image_part.rb +64 -0
  39. data/lib/openai/models/beta/threads/run_create_params.rb +3 -0
  40. data/lib/openai/models/chat/completion_create_params.rb +3 -0
  41. data/lib/openai/models/comparison_filter.rb +29 -6
  42. data/lib/openai/models/evals/create_eval_completions_run_data_source.rb +3 -0
  43. data/lib/openai/models/evals/run_cancel_response.rb +6 -0
  44. data/lib/openai/models/evals/run_create_params.rb +6 -0
  45. data/lib/openai/models/evals/run_create_response.rb +6 -0
  46. data/lib/openai/models/evals/run_list_response.rb +6 -0
  47. data/lib/openai/models/evals/run_retrieve_response.rb +6 -0
  48. data/lib/openai/models/graders/score_model_grader.rb +3 -0
  49. data/lib/openai/models/image_edit_params.rb +4 -2
  50. data/lib/openai/models/image_model.rb +1 -0
  51. data/lib/openai/models/realtime/realtime_session.rb +4 -0
  52. data/lib/openai/models/realtime/realtime_session_create_request.rb +12 -0
  53. data/lib/openai/models/realtime/realtime_session_create_response.rb +12 -0
  54. data/lib/openai/models/reasoning.rb +3 -0
  55. data/lib/openai/models/reasoning_effort.rb +3 -0
  56. data/lib/openai/models/responses/tool.rb +5 -2
  57. data/lib/openai/models/responses_model.rb +2 -0
  58. data/lib/openai/models/vector_stores/vector_store_file.rb +3 -3
  59. data/lib/openai/models/video.rb +122 -0
  60. data/lib/openai/models/video_create_error.rb +21 -0
  61. data/lib/openai/models/video_create_params.rb +54 -0
  62. data/lib/openai/models/video_delete_params.rb +14 -0
  63. data/lib/openai/models/video_delete_response.rb +35 -0
  64. data/lib/openai/models/video_download_content_params.rb +34 -0
  65. data/lib/openai/models/video_list_params.rb +54 -0
  66. data/lib/openai/models/video_model.rb +15 -0
  67. data/lib/openai/models/video_remix_params.rb +22 -0
  68. data/lib/openai/models/video_retrieve_params.rb +14 -0
  69. data/lib/openai/models/video_seconds.rb +16 -0
  70. data/lib/openai/models/video_size.rb +17 -0
  71. data/lib/openai/models.rb +22 -0
  72. data/lib/openai/resources/beta/chatkit/sessions.rb +71 -0
  73. data/lib/openai/resources/beta/chatkit/threads.rb +126 -0
  74. data/lib/openai/resources/beta/chatkit.rb +50 -0
  75. data/lib/openai/resources/beta.rb +4 -0
  76. data/lib/openai/resources/files.rb +1 -1
  77. data/lib/openai/resources/videos.rb +165 -0
  78. data/lib/openai/version.rb +1 -1
  79. data/lib/openai.rb +46 -0
  80. data/rbi/openai/client.rbi +3 -0
  81. data/rbi/openai/models/all_models.rbi +10 -0
  82. data/rbi/openai/models/beta/assistant_create_params.rbi +6 -0
  83. data/rbi/openai/models/beta/assistant_update_params.rbi +6 -0
  84. data/rbi/openai/models/beta/chatkit/chat_session.rbi +141 -0
  85. data/rbi/openai/models/beta/chatkit/chat_session_automatic_thread_titling.rbi +35 -0
  86. data/rbi/openai/models/beta/chatkit/chat_session_chatkit_configuration.rbi +87 -0
  87. data/rbi/openai/models/beta/chatkit/chat_session_chatkit_configuration_param.rbi +256 -0
  88. data/rbi/openai/models/beta/chatkit/chat_session_expires_after_param.rbi +43 -0
  89. data/rbi/openai/models/beta/chatkit/chat_session_file_upload.rbi +61 -0
  90. data/rbi/openai/models/beta/chatkit/chat_session_history.rbi +52 -0
  91. data/rbi/openai/models/beta/chatkit/chat_session_rate_limits.rbi +37 -0
  92. data/rbi/openai/models/beta/chatkit/chat_session_rate_limits_param.rbi +40 -0
  93. data/rbi/openai/models/beta/chatkit/chat_session_status.rbi +43 -0
  94. data/rbi/openai/models/beta/chatkit/chat_session_workflow_param.rbi +166 -0
  95. data/rbi/openai/models/beta/chatkit/chatkit_attachment.rbi +116 -0
  96. data/rbi/openai/models/beta/chatkit/chatkit_response_output_text.rbi +287 -0
  97. data/rbi/openai/models/beta/chatkit/chatkit_thread.rbi +220 -0
  98. data/rbi/openai/models/beta/chatkit/chatkit_thread_assistant_message_item.rbi +94 -0
  99. data/rbi/openai/models/beta/chatkit/chatkit_thread_item_list.rbi +590 -0
  100. data/rbi/openai/models/beta/chatkit/chatkit_thread_user_message_item.rbi +324 -0
  101. data/rbi/openai/models/beta/chatkit/chatkit_widget_item.rbi +87 -0
  102. data/rbi/openai/models/beta/chatkit/session_cancel_params.rbi +34 -0
  103. data/rbi/openai/models/beta/chatkit/session_create_params.rbi +136 -0
  104. data/rbi/openai/models/beta/chatkit/thread_delete_params.rbi +34 -0
  105. data/rbi/openai/models/beta/chatkit/thread_delete_response.rbi +55 -0
  106. data/rbi/openai/models/beta/chatkit/thread_list_items_params.rbi +138 -0
  107. data/rbi/openai/models/beta/chatkit/thread_list_params.rbi +145 -0
  108. data/rbi/openai/models/beta/chatkit/thread_retrieve_params.rbi +34 -0
  109. data/rbi/openai/models/beta/chatkit_upload_file_params.rbi +50 -0
  110. data/rbi/openai/models/beta/chatkit_upload_file_response.rbi +25 -0
  111. data/rbi/openai/models/beta/chatkit_workflow.rbi +134 -0
  112. data/rbi/openai/models/beta/file_part.rbi +74 -0
  113. data/rbi/openai/models/beta/image_part.rbi +82 -0
  114. data/rbi/openai/models/beta/threads/run_create_params.rbi +6 -0
  115. data/rbi/openai/models/chat/completion_create_params.rbi +6 -0
  116. data/rbi/openai/models/comparison_filter.rbi +43 -4
  117. data/rbi/openai/models/eval_create_response.rbi +4 -4
  118. data/rbi/openai/models/eval_list_response.rbi +4 -4
  119. data/rbi/openai/models/eval_retrieve_response.rbi +4 -4
  120. data/rbi/openai/models/eval_update_response.rbi +4 -4
  121. data/rbi/openai/models/evals/create_eval_completions_run_data_source.rbi +6 -0
  122. data/rbi/openai/models/evals/run_cancel_response.rbi +12 -0
  123. data/rbi/openai/models/evals/run_create_params.rbi +12 -0
  124. data/rbi/openai/models/evals/run_create_response.rbi +12 -0
  125. data/rbi/openai/models/evals/run_list_response.rbi +12 -0
  126. data/rbi/openai/models/evals/run_retrieve_response.rbi +12 -0
  127. data/rbi/openai/models/graders/score_model_grader.rbi +6 -0
  128. data/rbi/openai/models/image_edit_params.rbi +6 -3
  129. data/rbi/openai/models/image_model.rbi +2 -0
  130. data/rbi/openai/models/realtime/realtime_session.rbi +20 -0
  131. data/rbi/openai/models/realtime/realtime_session_create_request.rbi +20 -0
  132. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +20 -0
  133. data/rbi/openai/models/reasoning.rbi +6 -0
  134. data/rbi/openai/models/reasoning_effort.rbi +3 -0
  135. data/rbi/openai/models/responses/tool.rbi +11 -3
  136. data/rbi/openai/models/responses_model.rbi +10 -0
  137. data/rbi/openai/models/vector_stores/vector_store_file.rbi +3 -3
  138. data/rbi/openai/models/video.rbi +143 -0
  139. data/rbi/openai/models/video_create_error.rbi +26 -0
  140. data/rbi/openai/models/video_create_params.rbi +87 -0
  141. data/rbi/openai/models/video_delete_params.rbi +27 -0
  142. data/rbi/openai/models/video_delete_response.rbi +46 -0
  143. data/rbi/openai/models/video_download_content_params.rbi +89 -0
  144. data/rbi/openai/models/video_list_params.rbi +91 -0
  145. data/rbi/openai/models/video_model.rbi +19 -0
  146. data/rbi/openai/models/video_remix_params.rbi +40 -0
  147. data/rbi/openai/models/video_retrieve_params.rbi +27 -0
  148. data/rbi/openai/models/video_seconds.rbi +20 -0
  149. data/rbi/openai/models/video_size.rbi +23 -0
  150. data/rbi/openai/models.rbi +22 -0
  151. data/rbi/openai/resources/beta/assistants.rbi +6 -0
  152. data/rbi/openai/resources/beta/chatkit/sessions.rbi +61 -0
  153. data/rbi/openai/resources/beta/chatkit/threads.rbi +110 -0
  154. data/rbi/openai/resources/beta/chatkit.rbi +35 -0
  155. data/rbi/openai/resources/beta/threads/runs.rbi +6 -0
  156. data/rbi/openai/resources/beta.rbi +3 -0
  157. data/rbi/openai/resources/chat/completions.rbi +6 -0
  158. data/rbi/openai/resources/files.rbi +1 -1
  159. data/rbi/openai/resources/images.rbi +4 -2
  160. data/rbi/openai/resources/videos.rbi +121 -0
  161. data/sig/openai/client.rbs +2 -0
  162. data/sig/openai/models/all_models.rbs +4 -0
  163. data/sig/openai/models/beta/chatkit/chat_session.rbs +69 -0
  164. data/sig/openai/models/beta/chatkit/chat_session_automatic_thread_titling.rbs +17 -0
  165. data/sig/openai/models/beta/chatkit/chat_session_chatkit_configuration.rbs +34 -0
  166. data/sig/openai/models/beta/chatkit/chat_session_chatkit_configuration_param.rbs +103 -0
  167. data/sig/openai/models/beta/chatkit/chat_session_expires_after_param.rbs +20 -0
  168. data/sig/openai/models/beta/chatkit/chat_session_file_upload.rbs +30 -0
  169. data/sig/openai/models/beta/chatkit/chat_session_history.rbs +19 -0
  170. data/sig/openai/models/beta/chatkit/chat_session_rate_limits.rbs +18 -0
  171. data/sig/openai/models/beta/chatkit/chat_session_rate_limits_param.rbs +20 -0
  172. data/sig/openai/models/beta/chatkit/chat_session_status.rbs +19 -0
  173. data/sig/openai/models/beta/chatkit/chat_session_workflow_param.rbs +69 -0
  174. data/sig/openai/models/beta/chatkit/chatkit_attachment.rbs +57 -0
  175. data/sig/openai/models/beta/chatkit/chatkit_response_output_text.rbs +114 -0
  176. data/sig/openai/models/beta/chatkit/chatkit_thread.rbs +96 -0
  177. data/sig/openai/models/beta/chatkit/chatkit_thread_assistant_message_item.rbs +51 -0
  178. data/sig/openai/models/beta/chatkit/chatkit_thread_item_list.rbs +276 -0
  179. data/sig/openai/models/beta/chatkit/chatkit_thread_user_message_item.rbs +127 -0
  180. data/sig/openai/models/beta/chatkit/chatkit_widget_item.rbs +51 -0
  181. data/sig/openai/models/beta/chatkit/session_cancel_params.rbs +19 -0
  182. data/sig/openai/models/beta/chatkit/session_create_params.rbs +62 -0
  183. data/sig/openai/models/beta/chatkit/thread_delete_params.rbs +19 -0
  184. data/sig/openai/models/beta/chatkit/thread_delete_response.rbs +30 -0
  185. data/sig/openai/models/beta/chatkit/thread_list_items_params.rbs +66 -0
  186. data/sig/openai/models/beta/chatkit/thread_list_params.rbs +73 -0
  187. data/sig/openai/models/beta/chatkit/thread_retrieve_params.rbs +19 -0
  188. data/sig/openai/models/beta/chatkit_upload_file_params.rbs +26 -0
  189. data/sig/openai/models/beta/chatkit_upload_file_response.rbs +14 -0
  190. data/sig/openai/models/beta/chatkit_workflow.rbs +55 -0
  191. data/sig/openai/models/beta/file_part.rbs +42 -0
  192. data/sig/openai/models/beta/image_part.rbs +47 -0
  193. data/sig/openai/models/comparison_filter.rbs +15 -1
  194. data/sig/openai/models/eval_create_response.rbs +2 -2
  195. data/sig/openai/models/eval_list_response.rbs +2 -2
  196. data/sig/openai/models/eval_retrieve_response.rbs +2 -2
  197. data/sig/openai/models/eval_update_response.rbs +2 -2
  198. data/sig/openai/models/image_model.rbs +3 -1
  199. data/sig/openai/models/realtime/realtime_session.rbs +8 -0
  200. data/sig/openai/models/realtime/realtime_session_create_request.rbs +8 -0
  201. data/sig/openai/models/realtime/realtime_session_create_response.rbs +8 -0
  202. data/sig/openai/models/responses/tool.rbs +2 -1
  203. data/sig/openai/models/responses_model.rbs +4 -0
  204. data/sig/openai/models/video.rbs +88 -0
  205. data/sig/openai/models/video_create_error.rbs +15 -0
  206. data/sig/openai/models/video_create_params.rbs +58 -0
  207. data/sig/openai/models/video_delete_params.rbs +14 -0
  208. data/sig/openai/models/video_delete_response.rbs +22 -0
  209. data/sig/openai/models/video_download_content_params.rbs +40 -0
  210. data/sig/openai/models/video_list_params.rbs +55 -0
  211. data/sig/openai/models/video_model.rbs +14 -0
  212. data/sig/openai/models/video_remix_params.rbs +23 -0
  213. data/sig/openai/models/video_retrieve_params.rbs +15 -0
  214. data/sig/openai/models/video_seconds.rbs +15 -0
  215. data/sig/openai/models/video_size.rbs +16 -0
  216. data/sig/openai/models.rbs +22 -0
  217. data/sig/openai/resources/beta/chatkit/sessions.rbs +25 -0
  218. data/sig/openai/resources/beta/chatkit/threads.rbs +39 -0
  219. data/sig/openai/resources/beta/chatkit.rbs +18 -0
  220. data/sig/openai/resources/beta.rbs +2 -0
  221. data/sig/openai/resources/videos.rbs +45 -0
  222. metadata +140 -2
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module VideoSeconds
6
+ extend OpenAI::Internal::Type::Enum
7
+
8
+ VIDEO_SECONDS_4 = :"4"
9
+ VIDEO_SECONDS_8 = :"8"
10
+ VIDEO_SECONDS_12 = :"12"
11
+
12
+ # @!method self.values
13
+ # @return [Array<Symbol>]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Models
5
+ module VideoSize
6
+ extend OpenAI::Internal::Type::Enum
7
+
8
+ VIDEO_SIZE_720X1280 = :"720x1280"
9
+ VIDEO_SIZE_1280X720 = :"1280x720"
10
+ VIDEO_SIZE_1024X1792 = :"1024x1792"
11
+ VIDEO_SIZE_1792X1024 = :"1792x1024"
12
+
13
+ # @!method self.values
14
+ # @return [Array<Symbol>]
15
+ end
16
+ end
17
+ end
data/lib/openai/models.rb CHANGED
@@ -259,5 +259,27 @@ module OpenAI
259
259
 
260
260
  VectorStoreUpdateParams = OpenAI::Models::VectorStoreUpdateParams
261
261
 
262
+ Video = OpenAI::Models::Video
263
+
264
+ VideoCreateError = OpenAI::Models::VideoCreateError
265
+
266
+ VideoCreateParams = OpenAI::Models::VideoCreateParams
267
+
268
+ VideoDeleteParams = OpenAI::Models::VideoDeleteParams
269
+
270
+ VideoDownloadContentParams = OpenAI::Models::VideoDownloadContentParams
271
+
272
+ VideoListParams = OpenAI::Models::VideoListParams
273
+
274
+ VideoModel = OpenAI::Models::VideoModel
275
+
276
+ VideoRemixParams = OpenAI::Models::VideoRemixParams
277
+
278
+ VideoRetrieveParams = OpenAI::Models::VideoRetrieveParams
279
+
280
+ VideoSeconds = OpenAI::Models::VideoSeconds
281
+
282
+ VideoSize = OpenAI::Models::VideoSize
283
+
262
284
  Webhooks = OpenAI::Models::Webhooks
263
285
  end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Beta
6
+ class ChatKit
7
+ class Sessions
8
+ # Some parameter documentations has been truncated, see
9
+ # {OpenAI::Models::Beta::ChatKit::SessionCreateParams} for more details.
10
+ #
11
+ # Create a ChatKit session
12
+ #
13
+ # @overload create(user:, workflow:, chatkit_configuration: nil, expires_after: nil, rate_limits: nil, request_options: {})
14
+ #
15
+ # @param user [String] A free-form string that identifies your end user; ensures this Session can acces
16
+ #
17
+ # @param workflow [OpenAI::Models::Beta::ChatKit::ChatSessionWorkflowParam] Workflow that powers the session.
18
+ #
19
+ # @param chatkit_configuration [OpenAI::Models::Beta::ChatKit::ChatSessionChatKitConfigurationParam] Optional overrides for ChatKit runtime configuration features
20
+ #
21
+ # @param expires_after [OpenAI::Models::Beta::ChatKit::ChatSessionExpiresAfterParam] Optional override for session expiration timing in seconds from creation. Defaul
22
+ #
23
+ # @param rate_limits [OpenAI::Models::Beta::ChatKit::ChatSessionRateLimitsParam] Optional override for per-minute request limits. When omitted, defaults to 10.
24
+ #
25
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
26
+ #
27
+ # @return [OpenAI::Models::Beta::ChatKit::ChatSession]
28
+ #
29
+ # @see OpenAI::Models::Beta::ChatKit::SessionCreateParams
30
+ def create(params)
31
+ parsed, options = OpenAI::Beta::ChatKit::SessionCreateParams.dump_request(params)
32
+ @client.request(
33
+ method: :post,
34
+ path: "chatkit/sessions",
35
+ body: parsed,
36
+ model: OpenAI::Beta::ChatKit::ChatSession,
37
+ options: {extra_headers: {"OpenAI-Beta" => "chatkit_beta=v1"}, **options}
38
+ )
39
+ end
40
+
41
+ # Cancel a ChatKit session
42
+ #
43
+ # @overload cancel(session_id, request_options: {})
44
+ #
45
+ # @param session_id [String] Unique identifier for the ChatKit session to cancel.
46
+ #
47
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
48
+ #
49
+ # @return [OpenAI::Models::Beta::ChatKit::ChatSession]
50
+ #
51
+ # @see OpenAI::Models::Beta::ChatKit::SessionCancelParams
52
+ def cancel(session_id, params = {})
53
+ @client.request(
54
+ method: :post,
55
+ path: ["chatkit/sessions/%1$s/cancel", session_id],
56
+ model: OpenAI::Beta::ChatKit::ChatSession,
57
+ options: {extra_headers: {"OpenAI-Beta" => "chatkit_beta=v1"}, **params[:request_options].to_h}
58
+ )
59
+ end
60
+
61
+ # @api private
62
+ #
63
+ # @param client [OpenAI::Client]
64
+ def initialize(client:)
65
+ @client = client
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Beta
6
+ class ChatKit
7
+ class Threads
8
+ # Retrieve a ChatKit thread
9
+ #
10
+ # @overload retrieve(thread_id, request_options: {})
11
+ #
12
+ # @param thread_id [String] Identifier of the ChatKit thread to retrieve.
13
+ #
14
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
15
+ #
16
+ # @return [OpenAI::Models::Beta::ChatKit::ChatKitThread]
17
+ #
18
+ # @see OpenAI::Models::Beta::ChatKit::ThreadRetrieveParams
19
+ def retrieve(thread_id, params = {})
20
+ @client.request(
21
+ method: :get,
22
+ path: ["chatkit/threads/%1$s", thread_id],
23
+ model: OpenAI::Beta::ChatKit::ChatKitThread,
24
+ options: {extra_headers: {"OpenAI-Beta" => "chatkit_beta=v1"}, **params[:request_options].to_h}
25
+ )
26
+ end
27
+
28
+ # Some parameter documentations has been truncated, see
29
+ # {OpenAI::Models::Beta::ChatKit::ThreadListParams} for more details.
30
+ #
31
+ # List ChatKit threads
32
+ #
33
+ # @overload list(after: nil, before: nil, limit: nil, order: nil, user: nil, request_options: {})
34
+ #
35
+ # @param after [String] List items created after this thread item ID. Defaults to null for the first pag
36
+ #
37
+ # @param before [String] List items created before this thread item ID. Defaults to null for the newest r
38
+ #
39
+ # @param limit [Integer] Maximum number of thread items to return. Defaults to 20.
40
+ #
41
+ # @param order [Symbol, OpenAI::Models::Beta::ChatKit::ThreadListParams::Order] Sort order for results by creation time. Defaults to `desc`.
42
+ #
43
+ # @param user [String] Filter threads that belong to this user identifier. Defaults to null to return a
44
+ #
45
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
46
+ #
47
+ # @return [OpenAI::Internal::ConversationCursorPage<OpenAI::Models::Beta::ChatKit::ChatKitThread>]
48
+ #
49
+ # @see OpenAI::Models::Beta::ChatKit::ThreadListParams
50
+ def list(params = {})
51
+ parsed, options = OpenAI::Beta::ChatKit::ThreadListParams.dump_request(params)
52
+ @client.request(
53
+ method: :get,
54
+ path: "chatkit/threads",
55
+ query: parsed,
56
+ page: OpenAI::Internal::ConversationCursorPage,
57
+ model: OpenAI::Beta::ChatKit::ChatKitThread,
58
+ options: {extra_headers: {"OpenAI-Beta" => "chatkit_beta=v1"}, **options}
59
+ )
60
+ end
61
+
62
+ # Delete a ChatKit thread
63
+ #
64
+ # @overload delete(thread_id, request_options: {})
65
+ #
66
+ # @param thread_id [String] Identifier of the ChatKit thread to delete.
67
+ #
68
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
69
+ #
70
+ # @return [OpenAI::Models::Beta::ChatKit::ThreadDeleteResponse]
71
+ #
72
+ # @see OpenAI::Models::Beta::ChatKit::ThreadDeleteParams
73
+ def delete(thread_id, params = {})
74
+ @client.request(
75
+ method: :delete,
76
+ path: ["chatkit/threads/%1$s", thread_id],
77
+ model: OpenAI::Models::Beta::ChatKit::ThreadDeleteResponse,
78
+ options: {extra_headers: {"OpenAI-Beta" => "chatkit_beta=v1"}, **params[:request_options].to_h}
79
+ )
80
+ end
81
+
82
+ # Some parameter documentations has been truncated, see
83
+ # {OpenAI::Models::Beta::ChatKit::ThreadListItemsParams} for more details.
84
+ #
85
+ # List ChatKit thread items
86
+ #
87
+ # @overload list_items(thread_id, after: nil, before: nil, limit: nil, order: nil, request_options: {})
88
+ #
89
+ # @param thread_id [String] Identifier of the ChatKit thread whose items are requested.
90
+ #
91
+ # @param after [String] List items created after this thread item ID. Defaults to null for the first pag
92
+ #
93
+ # @param before [String] List items created before this thread item ID. Defaults to null for the newest r
94
+ #
95
+ # @param limit [Integer] Maximum number of thread items to return. Defaults to 20.
96
+ #
97
+ # @param order [Symbol, OpenAI::Models::Beta::ChatKit::ThreadListItemsParams::Order] Sort order for results by creation time. Defaults to `desc`.
98
+ #
99
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
100
+ #
101
+ # @return [OpenAI::Internal::ConversationCursorPage<OpenAI::Models::Beta::ChatKit::ChatKitThreadUserMessageItem, OpenAI::Models::Beta::ChatKit::ChatKitThreadAssistantMessageItem, OpenAI::Models::Beta::ChatKit::ChatKitWidgetItem, OpenAI::Models::Beta::ChatKit::ChatKitThreadItemList::Data::ChatKitClientToolCall, OpenAI::Models::Beta::ChatKit::ChatKitThreadItemList::Data::ChatKitTask, OpenAI::Models::Beta::ChatKit::ChatKitThreadItemList::Data::ChatKitTaskGroup>]
102
+ #
103
+ # @see OpenAI::Models::Beta::ChatKit::ThreadListItemsParams
104
+ def list_items(thread_id, params = {})
105
+ parsed, options = OpenAI::Beta::ChatKit::ThreadListItemsParams.dump_request(params)
106
+ @client.request(
107
+ method: :get,
108
+ path: ["chatkit/threads/%1$s/items", thread_id],
109
+ query: parsed,
110
+ page: OpenAI::Internal::ConversationCursorPage,
111
+ model: OpenAI::Beta::ChatKit::ChatKitThreadItemList::Data,
112
+ options: {extra_headers: {"OpenAI-Beta" => "chatkit_beta=v1"}, **options}
113
+ )
114
+ end
115
+
116
+ # @api private
117
+ #
118
+ # @param client [OpenAI::Client]
119
+ def initialize(client:)
120
+ @client = client
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Beta
6
+ class ChatKit
7
+ # @return [OpenAI::Resources::Beta::ChatKit::Sessions]
8
+ attr_reader :sessions
9
+
10
+ # @return [OpenAI::Resources::Beta::ChatKit::Threads]
11
+ attr_reader :threads
12
+
13
+ # Some parameter documentations has been truncated, see
14
+ # {OpenAI::Models::Beta::ChatKitUploadFileParams} for more details.
15
+ #
16
+ # Upload a ChatKit file
17
+ #
18
+ # @overload upload_file(file:, request_options: {})
19
+ #
20
+ # @param file [Pathname, StringIO, IO, String, OpenAI::FilePart] Binary file contents to store with the ChatKit session. Supports PDFs and PNG, J
21
+ #
22
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
23
+ #
24
+ # @return [OpenAI::Models::Beta::FilePart, OpenAI::Models::Beta::ImagePart]
25
+ #
26
+ # @see OpenAI::Models::Beta::ChatKitUploadFileParams
27
+ def upload_file(params)
28
+ parsed, options = OpenAI::Beta::ChatKitUploadFileParams.dump_request(params)
29
+ @client.request(
30
+ method: :post,
31
+ path: "chatkit/files",
32
+ headers: {"content-type" => "multipart/form-data"},
33
+ body: parsed,
34
+ model: OpenAI::Models::Beta::ChatKitUploadFileResponse,
35
+ options: {extra_headers: {"OpenAI-Beta" => "chatkit_beta=v1"}, **options}
36
+ )
37
+ end
38
+
39
+ # @api private
40
+ #
41
+ # @param client [OpenAI::Client]
42
+ def initialize(client:)
43
+ @client = client
44
+ @sessions = OpenAI::Resources::Beta::ChatKit::Sessions.new(client: client)
45
+ @threads = OpenAI::Resources::Beta::ChatKit::Threads.new(client: client)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -3,6 +3,9 @@
3
3
  module OpenAI
4
4
  module Resources
5
5
  class Beta
6
+ # @return [OpenAI::Resources::Beta::ChatKit]
7
+ attr_reader :chatkit
8
+
6
9
  # @return [OpenAI::Resources::Beta::Assistants]
7
10
  attr_reader :assistants
8
11
 
@@ -14,6 +17,7 @@ module OpenAI
14
17
  # @param client [OpenAI::Client]
15
18
  def initialize(client:)
16
19
  @client = client
20
+ @chatkit = OpenAI::Resources::Beta::ChatKit.new(client: client)
17
21
  @assistants = OpenAI::Resources::Beta::Assistants.new(client: client)
18
22
  @threads = OpenAI::Resources::Beta::Threads.new(client: client)
19
23
  end
@@ -105,7 +105,7 @@ module OpenAI
105
105
  )
106
106
  end
107
107
 
108
- # Delete a file.
108
+ # Delete a file and remove it from all vector stores.
109
109
  #
110
110
  # @overload delete(file_id, request_options: {})
111
111
  #
@@ -0,0 +1,165 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Videos
6
+ # Create a video
7
+ #
8
+ # @overload create(prompt:, input_reference: nil, model: nil, seconds: nil, size: nil, request_options: {})
9
+ #
10
+ # @param prompt [String] Text prompt that describes the video to generate.
11
+ #
12
+ # @param input_reference [Pathname, StringIO, IO, String, OpenAI::FilePart] Optional image reference that guides generation.
13
+ #
14
+ # @param model [Symbol, OpenAI::Models::VideoModel] The video generation model to use. Defaults to `sora-2`.
15
+ #
16
+ # @param seconds [Symbol, OpenAI::Models::VideoSeconds] Clip duration in seconds. Defaults to 4 seconds.
17
+ #
18
+ # @param size [Symbol, OpenAI::Models::VideoSize] Output resolution formatted as width x height. Defaults to 720x1280.
19
+ #
20
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
21
+ #
22
+ # @return [OpenAI::Models::Video]
23
+ #
24
+ # @see OpenAI::Models::VideoCreateParams
25
+ def create(params)
26
+ parsed, options = OpenAI::VideoCreateParams.dump_request(params)
27
+ @client.request(
28
+ method: :post,
29
+ path: "videos",
30
+ headers: {"content-type" => "multipart/form-data"},
31
+ body: parsed,
32
+ model: OpenAI::Video,
33
+ options: options
34
+ )
35
+ end
36
+
37
+ # Retrieve a video
38
+ #
39
+ # @overload retrieve(video_id, request_options: {})
40
+ #
41
+ # @param video_id [String] The identifier of the video to retrieve.
42
+ #
43
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
44
+ #
45
+ # @return [OpenAI::Models::Video]
46
+ #
47
+ # @see OpenAI::Models::VideoRetrieveParams
48
+ def retrieve(video_id, params = {})
49
+ @client.request(
50
+ method: :get,
51
+ path: ["videos/%1$s", video_id],
52
+ model: OpenAI::Video,
53
+ options: params[:request_options]
54
+ )
55
+ end
56
+
57
+ # Some parameter documentations has been truncated, see
58
+ # {OpenAI::Models::VideoListParams} for more details.
59
+ #
60
+ # List videos
61
+ #
62
+ # @overload list(after: nil, limit: nil, order: nil, request_options: {})
63
+ #
64
+ # @param after [String] Identifier for the last item from the previous pagination request
65
+ #
66
+ # @param limit [Integer] Number of items to retrieve
67
+ #
68
+ # @param order [Symbol, OpenAI::Models::VideoListParams::Order] Sort order of results by timestamp. Use `asc` for ascending order or `desc` for
69
+ #
70
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
71
+ #
72
+ # @return [OpenAI::Internal::ConversationCursorPage<OpenAI::Models::Video>]
73
+ #
74
+ # @see OpenAI::Models::VideoListParams
75
+ def list(params = {})
76
+ parsed, options = OpenAI::VideoListParams.dump_request(params)
77
+ @client.request(
78
+ method: :get,
79
+ path: "videos",
80
+ query: parsed,
81
+ page: OpenAI::Internal::ConversationCursorPage,
82
+ model: OpenAI::Video,
83
+ options: options
84
+ )
85
+ end
86
+
87
+ # Delete a video
88
+ #
89
+ # @overload delete(video_id, request_options: {})
90
+ #
91
+ # @param video_id [String] The identifier of the video to delete.
92
+ #
93
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
94
+ #
95
+ # @return [OpenAI::Models::VideoDeleteResponse]
96
+ #
97
+ # @see OpenAI::Models::VideoDeleteParams
98
+ def delete(video_id, params = {})
99
+ @client.request(
100
+ method: :delete,
101
+ path: ["videos/%1$s", video_id],
102
+ model: OpenAI::Models::VideoDeleteResponse,
103
+ options: params[:request_options]
104
+ )
105
+ end
106
+
107
+ # Download video content
108
+ #
109
+ # @overload download_content(video_id, variant: nil, request_options: {})
110
+ #
111
+ # @param video_id [String] The identifier of the video whose media to download.
112
+ #
113
+ # @param variant [Symbol, OpenAI::Models::VideoDownloadContentParams::Variant] Which downloadable asset to return. Defaults to the MP4 video.
114
+ #
115
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
116
+ #
117
+ # @return [StringIO]
118
+ #
119
+ # @see OpenAI::Models::VideoDownloadContentParams
120
+ def download_content(video_id, params = {})
121
+ parsed, options = OpenAI::VideoDownloadContentParams.dump_request(params)
122
+ @client.request(
123
+ method: :get,
124
+ path: ["videos/%1$s/content", video_id],
125
+ query: parsed,
126
+ headers: {"accept" => "application/binary"},
127
+ model: StringIO,
128
+ options: options
129
+ )
130
+ end
131
+
132
+ # Create a video remix
133
+ #
134
+ # @overload remix(video_id, prompt:, request_options: {})
135
+ #
136
+ # @param video_id [String] The identifier of the completed video to remix.
137
+ #
138
+ # @param prompt [String] Updated text prompt that directs the remix generation.
139
+ #
140
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
141
+ #
142
+ # @return [OpenAI::Models::Video]
143
+ #
144
+ # @see OpenAI::Models::VideoRemixParams
145
+ def remix(video_id, params)
146
+ parsed, options = OpenAI::VideoRemixParams.dump_request(params)
147
+ @client.request(
148
+ method: :post,
149
+ path: ["videos/%1$s/remix", video_id],
150
+ headers: {"content-type" => "multipart/form-data"},
151
+ body: parsed,
152
+ model: OpenAI::Video,
153
+ options: options
154
+ )
155
+ end
156
+
157
+ # @api private
158
+ #
159
+ # @param client [OpenAI::Client]
160
+ def initialize(client:)
161
+ @client = client
162
+ end
163
+ end
164
+ end
165
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OpenAI
4
- VERSION = "0.29.0"
4
+ VERSION = "0.31.0"
5
5
  end
data/lib/openai.rb CHANGED
@@ -114,9 +114,39 @@ require_relative "openai/models/beta/assistant_tool_choice"
114
114
  require_relative "openai/models/beta/assistant_tool_choice_function"
115
115
  require_relative "openai/models/beta/assistant_tool_choice_option"
116
116
  require_relative "openai/models/beta/assistant_update_params"
117
+ require_relative "openai/models/beta/chatkit/chatkit_attachment"
118
+ require_relative "openai/models/beta/chatkit/chatkit_response_output_text"
119
+ require_relative "openai/models/beta/chatkit/chatkit_thread"
120
+ require_relative "openai/models/beta/chatkit/chatkit_thread_assistant_message_item"
121
+ require_relative "openai/models/beta/chatkit/chatkit_thread_item_list"
122
+ require_relative "openai/models/beta/chatkit/chatkit_thread_user_message_item"
123
+ require_relative "openai/models/beta/chatkit/chatkit_widget_item"
124
+ require_relative "openai/models/beta/chatkit/chat_session"
125
+ require_relative "openai/models/beta/chatkit/chat_session_automatic_thread_titling"
126
+ require_relative "openai/models/beta/chatkit/chat_session_chatkit_configuration"
127
+ require_relative "openai/models/beta/chatkit/chat_session_chatkit_configuration_param"
128
+ require_relative "openai/models/beta/chatkit/chat_session_expires_after_param"
129
+ require_relative "openai/models/beta/chatkit/chat_session_file_upload"
130
+ require_relative "openai/models/beta/chatkit/chat_session_history"
131
+ require_relative "openai/models/beta/chatkit/chat_session_rate_limits"
132
+ require_relative "openai/models/beta/chatkit/chat_session_rate_limits_param"
133
+ require_relative "openai/models/beta/chatkit/chat_session_status"
134
+ require_relative "openai/models/beta/chatkit/chat_session_workflow_param"
135
+ require_relative "openai/models/beta/chatkit/session_cancel_params"
136
+ require_relative "openai/models/beta/chatkit/session_create_params"
137
+ require_relative "openai/models/beta/chatkit/thread_delete_params"
138
+ require_relative "openai/models/beta/chatkit/thread_delete_response"
139
+ require_relative "openai/models/beta/chatkit/thread_list_items_params"
140
+ require_relative "openai/models/beta/chatkit/thread_list_params"
141
+ require_relative "openai/models/beta/chatkit/thread_retrieve_params"
142
+ require_relative "openai/models/beta/chatkit_upload_file_params"
143
+ require_relative "openai/models/beta/chatkit_upload_file_response"
144
+ require_relative "openai/models/beta/chatkit_workflow"
117
145
  require_relative "openai/models/beta/code_interpreter_tool"
146
+ require_relative "openai/models/beta/file_part"
118
147
  require_relative "openai/models/beta/file_search_tool"
119
148
  require_relative "openai/models/beta/function_tool"
149
+ require_relative "openai/models/beta/image_part"
120
150
  require_relative "openai/models/beta/message_stream_event"
121
151
  require_relative "openai/models/beta/run_step_stream_event"
122
152
  require_relative "openai/models/beta/run_stream_event"
@@ -642,6 +672,18 @@ require_relative "openai/models/vector_stores/vector_store_file_deleted"
642
672
  require_relative "openai/models/vector_store_search_params"
643
673
  require_relative "openai/models/vector_store_search_response"
644
674
  require_relative "openai/models/vector_store_update_params"
675
+ require_relative "openai/models/video"
676
+ require_relative "openai/models/video_create_error"
677
+ require_relative "openai/models/video_create_params"
678
+ require_relative "openai/models/video_delete_params"
679
+ require_relative "openai/models/video_delete_response"
680
+ require_relative "openai/models/video_download_content_params"
681
+ require_relative "openai/models/video_list_params"
682
+ require_relative "openai/models/video_model"
683
+ require_relative "openai/models/video_remix_params"
684
+ require_relative "openai/models/video_retrieve_params"
685
+ require_relative "openai/models/video_seconds"
686
+ require_relative "openai/models/video_size"
645
687
  require_relative "openai/models/webhooks/batch_cancelled_webhook_event"
646
688
  require_relative "openai/models/webhooks/batch_completed_webhook_event"
647
689
  require_relative "openai/models/webhooks/batch_expired_webhook_event"
@@ -667,6 +709,9 @@ require_relative "openai/resources/audio/translations"
667
709
  require_relative "openai/resources/batches"
668
710
  require_relative "openai/resources/beta"
669
711
  require_relative "openai/resources/beta/assistants"
712
+ require_relative "openai/resources/beta/chatkit"
713
+ require_relative "openai/resources/beta/chatkit/sessions"
714
+ require_relative "openai/resources/beta/chatkit/threads"
670
715
  require_relative "openai/resources/beta/threads"
671
716
  require_relative "openai/resources/beta/threads/messages"
672
717
  require_relative "openai/resources/beta/threads/runs"
@@ -708,6 +753,7 @@ require_relative "openai/resources/uploads/parts"
708
753
  require_relative "openai/resources/vector_stores"
709
754
  require_relative "openai/resources/vector_stores/file_batches"
710
755
  require_relative "openai/resources/vector_stores/files"
756
+ require_relative "openai/resources/videos"
711
757
  require_relative "openai/resources/webhooks"
712
758
  require_relative "openai/helpers/streaming/response_events"
713
759
  require_relative "openai/helpers/streaming/response_stream"
@@ -79,6 +79,9 @@ module OpenAI
79
79
  sig { returns(OpenAI::Resources::Containers) }
80
80
  attr_reader :containers
81
81
 
82
+ sig { returns(OpenAI::Resources::Videos) }
83
+ attr_reader :videos
84
+
82
85
  # @api private
83
86
  sig { override.returns(T::Hash[String, String]) }
84
87
  private def auth_headers
@@ -70,6 +70,16 @@ module OpenAI
70
70
  :"gpt-5-codex",
71
71
  OpenAI::AllModels::ResponsesOnlyModel::TaggedSymbol
72
72
  )
73
+ GPT_5_PRO =
74
+ T.let(
75
+ :"gpt-5-pro",
76
+ OpenAI::AllModels::ResponsesOnlyModel::TaggedSymbol
77
+ )
78
+ GPT_5_PRO_2025_10_06 =
79
+ T.let(
80
+ :"gpt-5-pro-2025-10-06",
81
+ OpenAI::AllModels::ResponsesOnlyModel::TaggedSymbol
82
+ )
73
83
 
74
84
  sig do
75
85
  override.returns(
@@ -50,6 +50,9 @@ module OpenAI
50
50
  # supported values are `minimal`, `low`, `medium`, and `high`. Reducing reasoning
51
51
  # effort can result in faster responses and fewer tokens used on reasoning in a
52
52
  # response.
53
+ #
54
+ # Note: The `gpt-5-pro` model defaults to (and only supports) `high` reasoning
55
+ # effort.
53
56
  sig { returns(T.nilable(OpenAI::ReasoningEffort::OrSymbol)) }
54
57
  attr_accessor :reasoning_effort
55
58
 
@@ -212,6 +215,9 @@ module OpenAI
212
215
  # supported values are `minimal`, `low`, `medium`, and `high`. Reducing reasoning
213
216
  # effort can result in faster responses and fewer tokens used on reasoning in a
214
217
  # response.
218
+ #
219
+ # Note: The `gpt-5-pro` model defaults to (and only supports) `high` reasoning
220
+ # effort.
215
221
  reasoning_effort: nil,
216
222
  # Specifies the format that the model must output. Compatible with
217
223
  # [GPT-4o](https://platform.openai.com/docs/models#gpt-4o),
@@ -70,6 +70,9 @@ module OpenAI
70
70
  # supported values are `minimal`, `low`, `medium`, and `high`. Reducing reasoning
71
71
  # effort can result in faster responses and fewer tokens used on reasoning in a
72
72
  # response.
73
+ #
74
+ # Note: The `gpt-5-pro` model defaults to (and only supports) `high` reasoning
75
+ # effort.
73
76
  sig { returns(T.nilable(OpenAI::ReasoningEffort::OrSymbol)) }
74
77
  attr_accessor :reasoning_effort
75
78
 
@@ -236,6 +239,9 @@ module OpenAI
236
239
  # supported values are `minimal`, `low`, `medium`, and `high`. Reducing reasoning
237
240
  # effort can result in faster responses and fewer tokens used on reasoning in a
238
241
  # response.
242
+ #
243
+ # Note: The `gpt-5-pro` model defaults to (and only supports) `high` reasoning
244
+ # effort.
239
245
  reasoning_effort: nil,
240
246
  # Specifies the format that the model must output. Compatible with
241
247
  # [GPT-4o](https://platform.openai.com/docs/models#gpt-4o),