openai 0.28.1 → 0.30.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 (196) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -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/chatkit/chat_session.rb +94 -0
  8. data/lib/openai/models/beta/chatkit/chat_session_automatic_thread_titling.rb +22 -0
  9. data/lib/openai/models/beta/chatkit/chat_session_chatkit_configuration.rb +38 -0
  10. data/lib/openai/models/beta/chatkit/chat_session_chatkit_configuration_param.rb +125 -0
  11. data/lib/openai/models/beta/chatkit/chat_session_expires_after_param.rb +30 -0
  12. data/lib/openai/models/beta/chatkit/chat_session_file_upload.rb +38 -0
  13. data/lib/openai/models/beta/chatkit/chat_session_history.rb +34 -0
  14. data/lib/openai/models/beta/chatkit/chat_session_rate_limits.rb +22 -0
  15. data/lib/openai/models/beta/chatkit/chat_session_rate_limits_param.rb +22 -0
  16. data/lib/openai/models/beta/chatkit/chat_session_status.rb +20 -0
  17. data/lib/openai/models/beta/chatkit/chat_session_workflow_param.rb +80 -0
  18. data/lib/openai/models/beta/chatkit/chatkit_attachment.rb +69 -0
  19. data/lib/openai/models/beta/chatkit/chatkit_response_output_text.rb +143 -0
  20. data/lib/openai/models/beta/chatkit/chatkit_thread.rb +145 -0
  21. data/lib/openai/models/beta/chatkit/chatkit_thread_assistant_message_item.rb +65 -0
  22. data/lib/openai/models/beta/chatkit/chatkit_thread_item_list.rb +374 -0
  23. data/lib/openai/models/beta/chatkit/chatkit_thread_user_message_item.rb +183 -0
  24. data/lib/openai/models/beta/chatkit/chatkit_widget_item.rb +64 -0
  25. data/lib/openai/models/beta/chatkit/session_cancel_params.rb +18 -0
  26. data/lib/openai/models/beta/chatkit/session_create_params.rb +63 -0
  27. data/lib/openai/models/beta/chatkit/thread_delete_params.rb +18 -0
  28. data/lib/openai/models/beta/chatkit/thread_delete_response.rb +39 -0
  29. data/lib/openai/models/beta/chatkit/thread_list_items_params.rb +66 -0
  30. data/lib/openai/models/beta/chatkit/thread_list_params.rb +75 -0
  31. data/lib/openai/models/beta/chatkit/thread_retrieve_params.rb +18 -0
  32. data/lib/openai/models/beta/chatkit_upload_file_params.rb +28 -0
  33. data/lib/openai/models/beta/chatkit_upload_file_response.rb +25 -0
  34. data/lib/openai/models/beta/chatkit_workflow.rb +78 -0
  35. data/lib/openai/models/beta/file_part.rb +56 -0
  36. data/lib/openai/models/beta/image_part.rb +64 -0
  37. data/lib/openai/models/image_edit_params.rb +4 -2
  38. data/lib/openai/models/image_model.rb +1 -0
  39. data/lib/openai/models/realtime/call_accept_params.rb +16 -0
  40. data/lib/openai/models/realtime/call_hangup_params.rb +16 -0
  41. data/lib/openai/models/realtime/call_refer_params.rb +28 -0
  42. data/lib/openai/models/realtime/call_reject_params.rb +28 -0
  43. data/lib/openai/models/realtime/realtime_session.rb +4 -0
  44. data/lib/openai/models/realtime/realtime_session_create_request.rb +12 -0
  45. data/lib/openai/models/realtime/realtime_session_create_response.rb +12 -0
  46. data/lib/openai/models/responses/tool.rb +5 -2
  47. data/lib/openai/models/responses_model.rb +2 -0
  48. data/lib/openai/models/video.rb +122 -0
  49. data/lib/openai/models/video_create_error.rb +21 -0
  50. data/lib/openai/models/video_create_params.rb +54 -0
  51. data/lib/openai/models/video_delete_params.rb +14 -0
  52. data/lib/openai/models/video_delete_response.rb +35 -0
  53. data/lib/openai/models/video_download_content_params.rb +34 -0
  54. data/lib/openai/models/video_list_params.rb +54 -0
  55. data/lib/openai/models/video_model.rb +15 -0
  56. data/lib/openai/models/video_remix_params.rb +22 -0
  57. data/lib/openai/models/video_retrieve_params.rb +14 -0
  58. data/lib/openai/models/video_seconds.rb +16 -0
  59. data/lib/openai/models/video_size.rb +17 -0
  60. data/lib/openai/models.rb +22 -0
  61. data/lib/openai/resources/beta/chatkit/sessions.rb +71 -0
  62. data/lib/openai/resources/beta/chatkit/threads.rb +126 -0
  63. data/lib/openai/resources/beta/chatkit.rb +50 -0
  64. data/lib/openai/resources/beta.rb +4 -0
  65. data/lib/openai/resources/realtime/calls.rb +143 -0
  66. data/lib/openai/resources/realtime.rb +4 -0
  67. data/lib/openai/resources/videos.rb +165 -0
  68. data/lib/openai/version.rb +1 -1
  69. data/lib/openai.rb +52 -1
  70. data/rbi/openai/client.rbi +3 -0
  71. data/rbi/openai/models/all_models.rbi +10 -0
  72. data/rbi/openai/models/beta/chatkit/chat_session.rbi +141 -0
  73. data/rbi/openai/models/beta/chatkit/chat_session_automatic_thread_titling.rbi +35 -0
  74. data/rbi/openai/models/beta/chatkit/chat_session_chatkit_configuration.rbi +87 -0
  75. data/rbi/openai/models/beta/chatkit/chat_session_chatkit_configuration_param.rbi +256 -0
  76. data/rbi/openai/models/beta/chatkit/chat_session_expires_after_param.rbi +43 -0
  77. data/rbi/openai/models/beta/chatkit/chat_session_file_upload.rbi +61 -0
  78. data/rbi/openai/models/beta/chatkit/chat_session_history.rbi +52 -0
  79. data/rbi/openai/models/beta/chatkit/chat_session_rate_limits.rbi +37 -0
  80. data/rbi/openai/models/beta/chatkit/chat_session_rate_limits_param.rbi +40 -0
  81. data/rbi/openai/models/beta/chatkit/chat_session_status.rbi +43 -0
  82. data/rbi/openai/models/beta/chatkit/chat_session_workflow_param.rbi +166 -0
  83. data/rbi/openai/models/beta/chatkit/chatkit_attachment.rbi +116 -0
  84. data/rbi/openai/models/beta/chatkit/chatkit_response_output_text.rbi +287 -0
  85. data/rbi/openai/models/beta/chatkit/chatkit_thread.rbi +220 -0
  86. data/rbi/openai/models/beta/chatkit/chatkit_thread_assistant_message_item.rbi +94 -0
  87. data/rbi/openai/models/beta/chatkit/chatkit_thread_item_list.rbi +590 -0
  88. data/rbi/openai/models/beta/chatkit/chatkit_thread_user_message_item.rbi +324 -0
  89. data/rbi/openai/models/beta/chatkit/chatkit_widget_item.rbi +87 -0
  90. data/rbi/openai/models/beta/chatkit/session_cancel_params.rbi +34 -0
  91. data/rbi/openai/models/beta/chatkit/session_create_params.rbi +136 -0
  92. data/rbi/openai/models/beta/chatkit/thread_delete_params.rbi +34 -0
  93. data/rbi/openai/models/beta/chatkit/thread_delete_response.rbi +55 -0
  94. data/rbi/openai/models/beta/chatkit/thread_list_items_params.rbi +138 -0
  95. data/rbi/openai/models/beta/chatkit/thread_list_params.rbi +145 -0
  96. data/rbi/openai/models/beta/chatkit/thread_retrieve_params.rbi +34 -0
  97. data/rbi/openai/models/beta/chatkit_upload_file_params.rbi +50 -0
  98. data/rbi/openai/models/beta/chatkit_upload_file_response.rbi +25 -0
  99. data/rbi/openai/models/beta/chatkit_workflow.rbi +134 -0
  100. data/rbi/openai/models/beta/file_part.rbi +74 -0
  101. data/rbi/openai/models/beta/image_part.rbi +82 -0
  102. data/rbi/openai/models/image_edit_params.rbi +6 -3
  103. data/rbi/openai/models/image_model.rbi +2 -0
  104. data/rbi/openai/models/realtime/call_accept_params.rbi +29 -0
  105. data/rbi/openai/models/realtime/call_hangup_params.rbi +29 -0
  106. data/rbi/openai/models/realtime/call_refer_params.rbi +44 -0
  107. data/rbi/openai/models/realtime/call_reject_params.rbi +47 -0
  108. data/rbi/openai/models/realtime/realtime_session.rbi +20 -0
  109. data/rbi/openai/models/realtime/realtime_session_create_request.rbi +20 -0
  110. data/rbi/openai/models/realtime/realtime_session_create_response.rbi +20 -0
  111. data/rbi/openai/models/responses/tool.rbi +11 -3
  112. data/rbi/openai/models/responses_model.rbi +10 -0
  113. data/rbi/openai/models/video.rbi +143 -0
  114. data/rbi/openai/models/video_create_error.rbi +26 -0
  115. data/rbi/openai/models/video_create_params.rbi +87 -0
  116. data/rbi/openai/models/video_delete_params.rbi +27 -0
  117. data/rbi/openai/models/video_delete_response.rbi +46 -0
  118. data/rbi/openai/models/video_download_content_params.rbi +89 -0
  119. data/rbi/openai/models/video_list_params.rbi +91 -0
  120. data/rbi/openai/models/video_model.rbi +19 -0
  121. data/rbi/openai/models/video_remix_params.rbi +40 -0
  122. data/rbi/openai/models/video_retrieve_params.rbi +27 -0
  123. data/rbi/openai/models/video_seconds.rbi +20 -0
  124. data/rbi/openai/models/video_size.rbi +23 -0
  125. data/rbi/openai/models.rbi +22 -0
  126. data/rbi/openai/resources/beta/chatkit/sessions.rbi +61 -0
  127. data/rbi/openai/resources/beta/chatkit/threads.rbi +110 -0
  128. data/rbi/openai/resources/beta/chatkit.rbi +35 -0
  129. data/rbi/openai/resources/beta.rbi +3 -0
  130. data/rbi/openai/resources/images.rbi +4 -2
  131. data/rbi/openai/resources/realtime/calls.rbi +182 -0
  132. data/rbi/openai/resources/realtime.rbi +3 -0
  133. data/rbi/openai/resources/videos.rbi +121 -0
  134. data/sig/openai/client.rbs +2 -0
  135. data/sig/openai/models/all_models.rbs +4 -0
  136. data/sig/openai/models/beta/chatkit/chat_session.rbs +69 -0
  137. data/sig/openai/models/beta/chatkit/chat_session_automatic_thread_titling.rbs +17 -0
  138. data/sig/openai/models/beta/chatkit/chat_session_chatkit_configuration.rbs +34 -0
  139. data/sig/openai/models/beta/chatkit/chat_session_chatkit_configuration_param.rbs +103 -0
  140. data/sig/openai/models/beta/chatkit/chat_session_expires_after_param.rbs +20 -0
  141. data/sig/openai/models/beta/chatkit/chat_session_file_upload.rbs +30 -0
  142. data/sig/openai/models/beta/chatkit/chat_session_history.rbs +19 -0
  143. data/sig/openai/models/beta/chatkit/chat_session_rate_limits.rbs +18 -0
  144. data/sig/openai/models/beta/chatkit/chat_session_rate_limits_param.rbs +20 -0
  145. data/sig/openai/models/beta/chatkit/chat_session_status.rbs +19 -0
  146. data/sig/openai/models/beta/chatkit/chat_session_workflow_param.rbs +69 -0
  147. data/sig/openai/models/beta/chatkit/chatkit_attachment.rbs +57 -0
  148. data/sig/openai/models/beta/chatkit/chatkit_response_output_text.rbs +114 -0
  149. data/sig/openai/models/beta/chatkit/chatkit_thread.rbs +96 -0
  150. data/sig/openai/models/beta/chatkit/chatkit_thread_assistant_message_item.rbs +51 -0
  151. data/sig/openai/models/beta/chatkit/chatkit_thread_item_list.rbs +276 -0
  152. data/sig/openai/models/beta/chatkit/chatkit_thread_user_message_item.rbs +127 -0
  153. data/sig/openai/models/beta/chatkit/chatkit_widget_item.rbs +51 -0
  154. data/sig/openai/models/beta/chatkit/session_cancel_params.rbs +19 -0
  155. data/sig/openai/models/beta/chatkit/session_create_params.rbs +62 -0
  156. data/sig/openai/models/beta/chatkit/thread_delete_params.rbs +19 -0
  157. data/sig/openai/models/beta/chatkit/thread_delete_response.rbs +30 -0
  158. data/sig/openai/models/beta/chatkit/thread_list_items_params.rbs +66 -0
  159. data/sig/openai/models/beta/chatkit/thread_list_params.rbs +73 -0
  160. data/sig/openai/models/beta/chatkit/thread_retrieve_params.rbs +19 -0
  161. data/sig/openai/models/beta/chatkit_upload_file_params.rbs +26 -0
  162. data/sig/openai/models/beta/chatkit_upload_file_response.rbs +14 -0
  163. data/sig/openai/models/beta/chatkit_workflow.rbs +55 -0
  164. data/sig/openai/models/beta/file_part.rbs +42 -0
  165. data/sig/openai/models/beta/image_part.rbs +47 -0
  166. data/sig/openai/models/image_model.rbs +3 -1
  167. data/sig/openai/models/realtime/call_accept_params.rbs +17 -0
  168. data/sig/openai/models/realtime/call_hangup_params.rbs +17 -0
  169. data/sig/openai/models/realtime/call_refer_params.rbs +25 -0
  170. data/sig/openai/models/realtime/call_reject_params.rbs +27 -0
  171. data/sig/openai/models/realtime/realtime_session.rbs +8 -0
  172. data/sig/openai/models/realtime/realtime_session_create_request.rbs +8 -0
  173. data/sig/openai/models/realtime/realtime_session_create_response.rbs +8 -0
  174. data/sig/openai/models/responses/tool.rbs +2 -1
  175. data/sig/openai/models/responses_model.rbs +4 -0
  176. data/sig/openai/models/video.rbs +88 -0
  177. data/sig/openai/models/video_create_error.rbs +15 -0
  178. data/sig/openai/models/video_create_params.rbs +58 -0
  179. data/sig/openai/models/video_delete_params.rbs +14 -0
  180. data/sig/openai/models/video_delete_response.rbs +22 -0
  181. data/sig/openai/models/video_download_content_params.rbs +40 -0
  182. data/sig/openai/models/video_list_params.rbs +55 -0
  183. data/sig/openai/models/video_model.rbs +14 -0
  184. data/sig/openai/models/video_remix_params.rbs +23 -0
  185. data/sig/openai/models/video_retrieve_params.rbs +15 -0
  186. data/sig/openai/models/video_seconds.rbs +15 -0
  187. data/sig/openai/models/video_size.rbs +16 -0
  188. data/sig/openai/models.rbs +22 -0
  189. data/sig/openai/resources/beta/chatkit/sessions.rbs +25 -0
  190. data/sig/openai/resources/beta/chatkit/threads.rbs +39 -0
  191. data/sig/openai/resources/beta/chatkit.rbs +18 -0
  192. data/sig/openai/resources/beta.rbs +2 -0
  193. data/sig/openai/resources/realtime/calls.rbs +43 -0
  194. data/sig/openai/resources/realtime.rbs +2 -0
  195. data/sig/openai/resources/videos.rbs +45 -0
  196. metadata +155 -2
@@ -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
@@ -0,0 +1,143 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenAI
4
+ module Resources
5
+ class Realtime
6
+ class Calls
7
+ # Some parameter documentations has been truncated, see
8
+ # {OpenAI::Models::Realtime::CallAcceptParams} for more details.
9
+ #
10
+ # Accept an incoming SIP call and configure the realtime session that will handle
11
+ # it.
12
+ #
13
+ # @overload accept(call_id, audio: nil, include: nil, instructions: nil, max_output_tokens: nil, model: nil, output_modalities: nil, prompt: nil, tool_choice: nil, tools: nil, tracing: nil, truncation: nil, type: :realtime, request_options: {})
14
+ #
15
+ # @param call_id [String] The identifier for the call provided in the
16
+ #
17
+ # @param audio [OpenAI::Models::Realtime::RealtimeAudioConfig] Configuration for input and output audio.
18
+ #
19
+ # @param include [Array<Symbol, OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Include>] Additional fields to include in server outputs.
20
+ #
21
+ # @param instructions [String] The default system instructions (i.e. system message) prepended to model calls.
22
+ #
23
+ # @param max_output_tokens [Integer, Symbol, :inf] Maximum number of output tokens for a single assistant response,
24
+ #
25
+ # @param model [String, Symbol, OpenAI::Models::Realtime::RealtimeSessionCreateRequest::Model] The Realtime model used for this session.
26
+ #
27
+ # @param output_modalities [Array<Symbol, OpenAI::Models::Realtime::RealtimeSessionCreateRequest::OutputModality>] The set of modalities the model can respond with. It defaults to `["audio"]`, in
28
+ #
29
+ # @param prompt [OpenAI::Models::Responses::ResponsePrompt, nil] Reference to a prompt template and its variables.
30
+ #
31
+ # @param tool_choice [Symbol, OpenAI::Models::Responses::ToolChoiceOptions, OpenAI::Models::Responses::ToolChoiceFunction, OpenAI::Models::Responses::ToolChoiceMcp] How the model chooses tools. Provide one of the string modes or force a specific
32
+ #
33
+ # @param tools [Array<OpenAI::Models::Realtime::RealtimeFunctionTool, OpenAI::Models::Realtime::RealtimeToolsConfigUnion::Mcp>] Tools available to the model.
34
+ #
35
+ # @param tracing [Symbol, :auto, OpenAI::Models::Realtime::RealtimeTracingConfig::TracingConfiguration, nil] Realtime API can write session traces to the [Traces Dashboard](/logs?api=traces
36
+ #
37
+ # @param truncation [Symbol, OpenAI::Models::Realtime::RealtimeTruncation::RealtimeTruncationStrategy, OpenAI::Models::Realtime::RealtimeTruncationRetentionRatio] Controls how the realtime conversation is truncated prior to model inference.
38
+ #
39
+ # @param type [Symbol, :realtime] The type of session to create. Always `realtime` for the Realtime API.
40
+ #
41
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
42
+ #
43
+ # @return [nil]
44
+ #
45
+ # @see OpenAI::Models::Realtime::CallAcceptParams
46
+ def accept(call_id, params)
47
+ parsed, options = OpenAI::Realtime::CallAcceptParams.dump_request(params)
48
+ @client.request(
49
+ method: :post,
50
+ path: ["realtime/calls/%1$s/accept", call_id],
51
+ body: parsed,
52
+ model: NilClass,
53
+ options: options
54
+ )
55
+ end
56
+
57
+ # Some parameter documentations has been truncated, see
58
+ # {OpenAI::Models::Realtime::CallHangupParams} for more details.
59
+ #
60
+ # End an active Realtime API call, whether it was initiated over SIP or WebRTC.
61
+ #
62
+ # @overload hangup(call_id, request_options: {})
63
+ #
64
+ # @param call_id [String] The identifier for the call. For SIP calls, use the value provided in the
65
+ #
66
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
67
+ #
68
+ # @return [nil]
69
+ #
70
+ # @see OpenAI::Models::Realtime::CallHangupParams
71
+ def hangup(call_id, params = {})
72
+ @client.request(
73
+ method: :post,
74
+ path: ["realtime/calls/%1$s/hangup", call_id],
75
+ model: NilClass,
76
+ options: params[:request_options]
77
+ )
78
+ end
79
+
80
+ # Some parameter documentations has been truncated, see
81
+ # {OpenAI::Models::Realtime::CallReferParams} for more details.
82
+ #
83
+ # Transfer an active SIP call to a new destination using the SIP REFER verb.
84
+ #
85
+ # @overload refer(call_id, target_uri:, request_options: {})
86
+ #
87
+ # @param call_id [String] The identifier for the call provided in the
88
+ #
89
+ # @param target_uri [String] URI that should appear in the SIP Refer-To header. Supports values like
90
+ #
91
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
92
+ #
93
+ # @return [nil]
94
+ #
95
+ # @see OpenAI::Models::Realtime::CallReferParams
96
+ def refer(call_id, params)
97
+ parsed, options = OpenAI::Realtime::CallReferParams.dump_request(params)
98
+ @client.request(
99
+ method: :post,
100
+ path: ["realtime/calls/%1$s/refer", call_id],
101
+ body: parsed,
102
+ model: NilClass,
103
+ options: options
104
+ )
105
+ end
106
+
107
+ # Some parameter documentations has been truncated, see
108
+ # {OpenAI::Models::Realtime::CallRejectParams} for more details.
109
+ #
110
+ # Decline an incoming SIP call by returning a SIP status code to the caller.
111
+ #
112
+ # @overload reject(call_id, status_code: nil, request_options: {})
113
+ #
114
+ # @param call_id [String] The identifier for the call provided in the
115
+ #
116
+ # @param status_code [Integer] SIP response code to send back to the caller. Defaults to `603` (Decline)
117
+ #
118
+ # @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
119
+ #
120
+ # @return [nil]
121
+ #
122
+ # @see OpenAI::Models::Realtime::CallRejectParams
123
+ def reject(call_id, params = {})
124
+ parsed, options = OpenAI::Realtime::CallRejectParams.dump_request(params)
125
+ @client.request(
126
+ method: :post,
127
+ path: ["realtime/calls/%1$s/reject", call_id],
128
+ body: parsed,
129
+ model: NilClass,
130
+ options: options
131
+ )
132
+ end
133
+
134
+ # @api private
135
+ #
136
+ # @param client [OpenAI::Client]
137
+ def initialize(client:)
138
+ @client = client
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
@@ -6,12 +6,16 @@ module OpenAI
6
6
  # @return [OpenAI::Resources::Realtime::ClientSecrets]
7
7
  attr_reader :client_secrets
8
8
 
9
+ # @return [OpenAI::Resources::Realtime::Calls]
10
+ attr_reader :calls
11
+
9
12
  # @api private
10
13
  #
11
14
  # @param client [OpenAI::Client]
12
15
  def initialize(client:)
13
16
  @client = client
14
17
  @client_secrets = OpenAI::Resources::Realtime::ClientSecrets.new(client: client)
18
+ @calls = OpenAI::Resources::Realtime::Calls.new(client: client)
15
19
  end
16
20
  end
17
21
  end
@@ -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.28.1"
4
+ VERSION = "0.30.0"
5
5
  end
data/lib/openai.rb CHANGED
@@ -71,6 +71,7 @@ require_relative "openai/models/graders/score_model_grader"
71
71
  require_relative "openai/models/graders/python_grader"
72
72
  require_relative "openai/models/graders/text_similarity_grader"
73
73
  require_relative "openai/models/fine_tuning/fine_tuning_job_wandb_integration_object"
74
+ require_relative "openai/models/realtime/realtime_session_create_request"
74
75
  require_relative "openai/models/responses/response_function_tool_call"
75
76
  require_relative "openai/models/all_models"
76
77
  require_relative "openai/models/audio/speech_create_params"
@@ -113,9 +114,39 @@ require_relative "openai/models/beta/assistant_tool_choice"
113
114
  require_relative "openai/models/beta/assistant_tool_choice_function"
114
115
  require_relative "openai/models/beta/assistant_tool_choice_option"
115
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"
116
145
  require_relative "openai/models/beta/code_interpreter_tool"
146
+ require_relative "openai/models/beta/file_part"
117
147
  require_relative "openai/models/beta/file_search_tool"
118
148
  require_relative "openai/models/beta/function_tool"
149
+ require_relative "openai/models/beta/image_part"
119
150
  require_relative "openai/models/beta/message_stream_event"
120
151
  require_relative "openai/models/beta/run_step_stream_event"
121
152
  require_relative "openai/models/beta/run_stream_event"
@@ -383,6 +414,10 @@ require_relative "openai/models/moderation_multi_modal_input"
383
414
  require_relative "openai/models/moderation_text_input"
384
415
  require_relative "openai/models/other_file_chunking_strategy_object"
385
416
  require_relative "openai/models/realtime/audio_transcription"
417
+ require_relative "openai/models/realtime/call_accept_params"
418
+ require_relative "openai/models/realtime/call_hangup_params"
419
+ require_relative "openai/models/realtime/call_refer_params"
420
+ require_relative "openai/models/realtime/call_reject_params"
386
421
  require_relative "openai/models/realtime/client_secret_create_params"
387
422
  require_relative "openai/models/realtime/client_secret_create_response"
388
423
  require_relative "openai/models/realtime/conversation_created_event"
@@ -448,7 +483,6 @@ require_relative "openai/models/realtime/realtime_response_usage_output_token_de
448
483
  require_relative "openai/models/realtime/realtime_server_event"
449
484
  require_relative "openai/models/realtime/realtime_session"
450
485
  require_relative "openai/models/realtime/realtime_session_client_secret"
451
- require_relative "openai/models/realtime/realtime_session_create_request"
452
486
  require_relative "openai/models/realtime/realtime_session_create_response"
453
487
  require_relative "openai/models/realtime/realtime_tool_choice_config"
454
488
  require_relative "openai/models/realtime/realtime_tools_config"
@@ -638,6 +672,18 @@ require_relative "openai/models/vector_stores/vector_store_file_deleted"
638
672
  require_relative "openai/models/vector_store_search_params"
639
673
  require_relative "openai/models/vector_store_search_response"
640
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"
641
687
  require_relative "openai/models/webhooks/batch_cancelled_webhook_event"
642
688
  require_relative "openai/models/webhooks/batch_completed_webhook_event"
643
689
  require_relative "openai/models/webhooks/batch_expired_webhook_event"
@@ -663,6 +709,9 @@ require_relative "openai/resources/audio/translations"
663
709
  require_relative "openai/resources/batches"
664
710
  require_relative "openai/resources/beta"
665
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"
666
715
  require_relative "openai/resources/beta/threads"
667
716
  require_relative "openai/resources/beta/threads/messages"
668
717
  require_relative "openai/resources/beta/threads/runs"
@@ -695,6 +744,7 @@ require_relative "openai/resources/images"
695
744
  require_relative "openai/resources/models"
696
745
  require_relative "openai/resources/moderations"
697
746
  require_relative "openai/resources/realtime"
747
+ require_relative "openai/resources/realtime/calls"
698
748
  require_relative "openai/resources/realtime/client_secrets"
699
749
  require_relative "openai/resources/responses"
700
750
  require_relative "openai/resources/responses/input_items"
@@ -703,6 +753,7 @@ require_relative "openai/resources/uploads/parts"
703
753
  require_relative "openai/resources/vector_stores"
704
754
  require_relative "openai/resources/vector_stores/file_batches"
705
755
  require_relative "openai/resources/vector_stores/files"
756
+ require_relative "openai/resources/videos"
706
757
  require_relative "openai/resources/webhooks"
707
758
  require_relative "openai/helpers/streaming/response_events"
708
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(