openai 0.103.0 → 0.104.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +81 -0
- data/README.md +23 -1
- data/lib/openai/client.rb +3 -386
- data/lib/openai/helpers/admin/organization/projects/api_keys.rb +42 -0
- data/lib/openai/helpers/agents/session_stream_resource.rb +60 -0
- data/lib/openai/helpers/beta/agents/artifacts.rb +18 -0
- data/lib/openai/helpers/beta/agents/files.rb +41 -0
- data/lib/openai/helpers/client_runtime.rb +391 -0
- data/lib/openai/helpers/files.rb +47 -0
- data/lib/openai/helpers/live/websocket.rb +8 -57
- data/lib/openai/helpers/models/chat/parsed.rb +32 -0
- data/lib/openai/helpers/models/responses/parsed.rb +30 -0
- data/lib/openai/helpers/models/responses/response.rb +32 -0
- data/lib/openai/helpers/models/webhooks/webhook_endpoint_with_secret.rb +20 -0
- data/lib/openai/helpers/realtime/client_extension.rb +1 -2
- data/lib/openai/helpers/realtime/connection_manager.rb +1 -1
- data/lib/openai/helpers/realtime/translation.rb +7 -50
- data/lib/openai/helpers/responses_websocket/client_extension.rb +1 -2
- data/lib/openai/helpers/streaming/chat_completion_resource.rb +36 -0
- data/lib/openai/helpers/streaming/response_stream.rb +1 -16
- data/lib/openai/helpers/streaming/response_stream_resource.rb +78 -0
- data/lib/openai/helpers/vector_stores/file_batches.rb +188 -0
- data/lib/openai/helpers/vector_stores/files.rb +198 -0
- data/lib/openai/helpers/websocket/client_request.rb +31 -6
- data/lib/openai/helpers/websocket/connection.rb +58 -0
- data/lib/openai/helpers/websocket/connection_manager.rb +4 -2
- data/lib/openai/helpers/websocket/protocol.rb +2 -1
- data/lib/openai/helpers/websocket/resource.rb +54 -0
- data/lib/openai/helpers/websocket/typed_connection.rb +95 -0
- data/lib/openai/helpers/websocket.rb +4 -0
- data/lib/openai/models/admin/organization/audit_log_list_response.rb +5 -3
- data/lib/openai/models/admin/organization/external_storage_configuration.rb +5 -3
- data/lib/openai/models/admin/organization/external_storage_create_params.rb +33 -3
- data/lib/openai/models/admin/organization/oci_external_storage_provider.rb +37 -0
- data/lib/openai/models/admin/organization/project_residency.rb +3 -0
- data/lib/openai/models/admin/organization/projects/api_key_update_params.rb +64 -0
- data/lib/openai/models/admin/organization/projects/api_key_update_scopes_params.rb +34 -0
- data/lib/openai/models/admin/organization/usage_decisions_params.rb +177 -0
- data/lib/openai/models/admin/organization/usage_decisions_response.rb +351 -0
- data/lib/openai/models/audio/speech_create_params.rb +6 -3
- data/lib/openai/models/audio/translation_create_response.rb +0 -1
- data/lib/openai/models/audio/voice.rb +17 -2
- data/lib/openai/models/audio/voice_create_params.rb +100 -3
- data/lib/openai/models/beta/agent_create_params.rb +4 -2
- data/lib/openai/models/beta/agent_list_params.rb +4 -4
- data/lib/openai/models/beta/agent_session.rb +37 -1
- data/lib/openai/models/beta/agent_update_params.rb +4 -2
- data/lib/openai/models/beta/agents/environment_list_params.rb +7 -7
- data/lib/openai/models/beta/agents/session_create_params.rb +39 -3
- data/lib/openai/models/beta/agents/session_list_params.rb +7 -10
- data/lib/openai/models/beta/agents/session_update_params.rb +33 -1
- data/lib/openai/models/beta/agents/sessions/artifact_list_params.rb +11 -11
- data/lib/openai/models/beta/agents/vault_list_params.rb +23 -13
- data/lib/openai/models/beta/agents/vault_status_filter.rb +1 -3
- data/lib/openai/models/beta/agents/vault_update_params.rb +47 -0
- data/lib/openai/models/beta/agents/vaults/credential_list_params.rb +23 -13
- data/lib/openai/models/beta/beta_response.rb +23 -2
- data/lib/openai/models/beta/beta_response_error.rb +19 -1
- data/lib/openai/models/beta/beta_response_input_item.rb +107 -1
- data/lib/openai/models/beta/beta_response_item.rb +107 -1
- data/lib/openai/models/beta/beta_response_output_item.rb +107 -1
- data/lib/openai/models/beta/beta_responses_client_event.rb +23 -2
- data/lib/openai/models/beta/response_compact_params.rb +21 -0
- data/lib/openai/models/beta/response_create_params.rb +23 -2
- data/lib/openai/models/beta/session_turn_error.rb +3 -0
- data/lib/openai/models/chat/chat_completion_audio_param.rb +3 -3
- data/lib/openai/models/chat/chat_completion_message.rb +0 -8
- data/lib/openai/models/chat/chat_completion_message_function_tool_call.rb +0 -8
- data/lib/openai/models/chat/completion_create_params.rb +5 -12
- data/lib/openai/models/chat_model.rb +21 -0
- data/lib/openai/models/conversations/conversation_item.rb +107 -1
- data/lib/openai/models/decision.rb +17 -2
- data/lib/openai/models/decision_create_params.rb +29 -12
- data/lib/openai/models/decision_input_image.rb +4 -3
- data/lib/openai/models/decision_input_message.rb +4 -4
- data/lib/openai/models/decision_input_part.rb +3 -2
- data/lib/openai/models/image_edit_completed_event.rb +1 -2
- data/lib/openai/models/image_edit_partial_image_event.rb +1 -2
- data/lib/openai/models/image_gen_completed_event.rb +1 -2
- data/lib/openai/models/image_gen_partial_image_event.rb +1 -2
- data/lib/openai/models/images_response.rb +1 -2
- data/lib/openai/models/live/built_in_voice.rb +1 -0
- data/lib/openai/models/live/client_event.rb +14 -2
- data/lib/openai/models/live/decision_create_event.rb +26 -0
- data/lib/openai/models/live/decision_event.rb +117 -0
- data/lib/openai/models/live/decision_item_create_event.rb +194 -0
- data/lib/openai/models/live/decision_item_created_event.rb +202 -0
- data/lib/openai/models/live/decision_item_delete_event.rb +38 -0
- data/lib/openai/models/live/decision_item_deleted_event.rb +46 -0
- data/lib/openai/models/live/decision_trigger.rb +244 -0
- data/lib/openai/models/live/decisions_delegation_config.rb +201 -0
- data/lib/openai/models/live/decisions_delegation_update_config.rb +208 -0
- data/lib/openai/models/live/delegation_created_event.rb +10 -10
- data/lib/openai/models/live/fork_client_event.rb +14 -2
- data/lib/openai/models/live/fork_server_event.rb +17 -2
- data/lib/openai/models/live/media_session_config.rb +47 -11
- data/lib/openai/models/live/output_audio_fixture_play_event.rb +48 -0
- data/lib/openai/models/live/output_audio_fixture_played_event.rb +42 -0
- data/lib/openai/models/live/output_audio_fixture_playing_event.rb +41 -0
- data/lib/openai/models/live/server_event.rb +17 -2
- data/lib/openai/models/live/session_accept_params.rb +47 -11
- data/lib/openai/models/live/session_config.rb +47 -11
- data/lib/openai/models/live/session_resource.rb +47 -11
- data/lib/openai/models/live/session_update_config.rb +38 -6
- data/lib/openai/models/live/session_update_event.rb +8 -8
- data/lib/openai/models/live/sideband_client_event.rb +57 -0
- data/lib/openai/models/live/sideband_server_event.rb +78 -0
- data/lib/openai/models/realtime/realtime_audio_config_output.rb +6 -3
- data/lib/openai/models/realtime/realtime_response_create_audio_output.rb +6 -3
- data/lib/openai/models/realtime/realtime_response_status.rb +10 -1
- data/lib/openai/models/response_format_json_schema.rb +1 -1
- data/lib/openai/models/responses/function_tool.rb +8 -6
- data/lib/openai/models/responses/response.rb +2 -23
- data/lib/openai/models/responses/response_compact_params.rb +21 -0
- data/lib/openai/models/responses/response_create_params.rb +3 -6
- data/lib/openai/models/responses/response_error.rb +19 -1
- data/lib/openai/models/responses/response_format_text_config.rb +0 -4
- data/lib/openai/models/responses/response_function_tool_call.rb +0 -8
- data/lib/openai/models/responses/response_input_item.rb +107 -1
- data/lib/openai/models/responses/response_item.rb +107 -1
- data/lib/openai/models/responses/response_output_item.rb +107 -1
- data/lib/openai/models/responses/response_output_text.rb +0 -8
- data/lib/openai/models/responses/responses_client_event.rb +2 -2
- data/lib/openai/models/safety/safety_alert.rb +12 -1
- data/lib/openai/models/video_create_error.rb +19 -1
- data/lib/openai/models/webhooks/unwrap_webhook_event.rb +4 -4
- data/lib/openai/models/webhooks/webhook_endpoint_with_secret.rb +0 -9
- data/lib/openai/resources/admin/organization/external_storage.rb +1 -1
- data/lib/openai/resources/admin/organization/projects/api_keys.rb +61 -0
- data/lib/openai/resources/admin/organization/usage.rb +67 -0
- data/lib/openai/resources/audio/speech.rb +2 -1
- data/lib/openai/resources/audio/voices.rb +10 -10
- data/lib/openai/resources/beta/agents/environments/files.rb +3 -31
- data/lib/openai/resources/beta/agents/environments.rb +3 -3
- data/lib/openai/resources/beta/agents/sessions/artifacts.rb +5 -11
- data/lib/openai/resources/beta/agents/sessions.rb +20 -56
- data/lib/openai/resources/beta/agents/vaults/credentials.rb +10 -6
- data/lib/openai/resources/beta/agents/vaults.rb +45 -6
- data/lib/openai/resources/beta/agents.rb +6 -4
- data/lib/openai/resources/beta/responses.rb +2 -2
- data/lib/openai/resources/chat/completions.rb +11 -37
- data/lib/openai/resources/decisions.rb +9 -15
- data/lib/openai/resources/files.rb +0 -39
- data/lib/openai/resources/live/forks.rb +19 -0
- data/lib/openai/resources/live/sideband.rb +19 -0
- data/lib/openai/resources/live.rb +19 -0
- data/lib/openai/resources/realtime/translations.rb +19 -0
- data/lib/openai/resources/realtime.rb +19 -0
- data/lib/openai/resources/responses.rb +44 -95
- data/lib/openai/resources/vector_stores/file_batches.rb +0 -178
- data/lib/openai/resources/vector_stores/files.rb +0 -188
- data/lib/openai/resources/webhooks.rb +13 -29
- data/lib/openai/version.rb +1 -1
- data/lib/openai.rb +31 -0
- data/rbi/openai/client.rbi +0 -103
- data/rbi/openai/helpers/admin/organization/projects/api_keys.rbi +25 -0
- data/rbi/openai/helpers/beta/agents/artifacts.rbi +25 -0
- data/rbi/openai/helpers/beta/agents/files.rbi +48 -0
- data/rbi/openai/helpers/client_runtime.rbi +108 -0
- data/rbi/openai/helpers/files.rbi +25 -0
- data/rbi/openai/helpers/models/chat/parsed.rbi +21 -0
- data/rbi/openai/helpers/models/responses/parsed.rbi +19 -0
- data/rbi/openai/helpers/models/responses/response.rbi +15 -0
- data/rbi/openai/helpers/streaming/response_stream.rbi +301 -0
- data/rbi/openai/helpers/vector_stores/file_batches.rbi +102 -0
- data/rbi/openai/helpers/vector_stores/files.rbi +122 -0
- data/rbi/openai/helpers/websocket.rbi +82 -0
- data/rbi/openai/models/admin/organization/audit_log_list_response.rbi +6 -3
- data/rbi/openai/models/admin/organization/external_storage_configuration.rbi +4 -2
- data/rbi/openai/models/admin/organization/external_storage_create_params.rbi +63 -4
- data/rbi/openai/models/admin/organization/oci_external_storage_provider.rbi +71 -0
- data/rbi/openai/models/admin/organization/project_residency.rbi +12 -0
- data/rbi/openai/models/admin/organization/projects/api_key_update_params.rbi +110 -0
- data/rbi/openai/models/admin/organization/projects/api_key_update_scopes_params.rbi +72 -0
- data/rbi/openai/models/admin/organization/usage_decisions_params.rbi +229 -0
- data/rbi/openai/models/admin/organization/usage_decisions_response.rbi +479 -0
- data/rbi/openai/models/audio/speech_create_params.rbi +6 -3
- data/rbi/openai/models/audio/voice.rbi +21 -2
- data/rbi/openai/models/audio/voice_create_params.rbi +149 -4
- data/rbi/openai/models/beta/agent_create_params.rbi +4 -2
- data/rbi/openai/models/beta/agent_list_params.rbi +8 -5
- data/rbi/openai/models/beta/agent_session.rbi +64 -1
- data/rbi/openai/models/beta/agent_update_params.rbi +4 -2
- data/rbi/openai/models/beta/agents/environment_list_params.rbi +7 -7
- data/rbi/openai/models/beta/agents/session_create_params.rbi +62 -2
- data/rbi/openai/models/beta/agents/session_list_params.rbi +11 -11
- data/rbi/openai/models/beta/agents/session_update_params.rbi +56 -0
- data/rbi/openai/models/beta/agents/sessions/artifact_list_params.rbi +19 -13
- data/rbi/openai/models/beta/agents/vault_list_params.rbi +30 -13
- data/rbi/openai/models/beta/agents/vault_status_filter.rbi +1 -3
- data/rbi/openai/models/beta/agents/vault_update_params.rbi +87 -0
- data/rbi/openai/models/beta/agents/vaults/credential_list_params.rbi +30 -13
- data/rbi/openai/models/beta/beta_response.rbi +2 -2
- data/rbi/openai/models/beta/beta_response_error.rbi +24 -3
- data/rbi/openai/models/beta/beta_response_input_item.rbi +191 -0
- data/rbi/openai/models/beta/beta_response_item.rbi +189 -0
- data/rbi/openai/models/beta/beta_response_output_item.rbi +191 -0
- data/rbi/openai/models/beta/beta_responses_client_event.rbi +2 -2
- data/rbi/openai/models/beta/response_create_params.rbi +2 -2
- data/rbi/openai/models/beta/session_turn_error.rbi +3 -0
- data/rbi/openai/models/chat/chat_completion_audio_param.rbi +3 -3
- data/rbi/openai/models/chat/chat_completion_message.rbi +0 -4
- data/rbi/openai/models/chat/chat_completion_message_function_tool_call.rbi +0 -4
- data/rbi/openai/models/chat/completion_create_params.rbi +63 -78
- data/rbi/openai/models/conversations/conversation_item.rbi +191 -0
- data/rbi/openai/models/decision.rbi +14 -1
- data/rbi/openai/models/decision_create_params.rbi +23 -12
- data/rbi/openai/models/decision_input_image.rbi +4 -3
- data/rbi/openai/models/decision_input_message.rbi +4 -4
- data/rbi/openai/models/decision_input_part.rbi +2 -1
- data/rbi/openai/models/image_edit_completed_event.rbi +1 -0
- data/rbi/openai/models/image_edit_partial_image_event.rbi +1 -0
- data/rbi/openai/models/image_gen_completed_event.rbi +1 -0
- data/rbi/openai/models/image_gen_partial_image_event.rbi +1 -0
- data/rbi/openai/models/images_response.rbi +1 -0
- data/rbi/openai/models/live/built_in_voice.rbi +1 -0
- data/rbi/openai/models/live/client_event.rbi +4 -0
- data/rbi/openai/models/live/decision_create_event.rbi +55 -0
- data/rbi/openai/models/live/decision_event.rbi +185 -0
- data/rbi/openai/models/live/decision_item_create_event.rbi +338 -0
- data/rbi/openai/models/live/decision_item_created_event.rbi +354 -0
- data/rbi/openai/models/live/decision_item_delete_event.rbi +66 -0
- data/rbi/openai/models/live/decision_item_deleted_event.rbi +77 -0
- data/rbi/openai/models/live/decision_trigger.rbi +465 -0
- data/rbi/openai/models/live/decisions_delegation_config.rbi +393 -0
- data/rbi/openai/models/live/decisions_delegation_update_config.rbi +412 -0
- data/rbi/openai/models/live/delegation_created_event.rbi +8 -10
- data/rbi/openai/models/live/fork_client_event.rbi +4 -0
- data/rbi/openai/models/live/fork_server_event.rbi +5 -0
- data/rbi/openai/models/live/media_session_config.rbi +95 -14
- data/rbi/openai/models/live/output_audio_fixture_play_event.rbi +76 -0
- data/rbi/openai/models/live/output_audio_fixture_played_event.rbi +73 -0
- data/rbi/openai/models/live/output_audio_fixture_playing_event.rbi +72 -0
- data/rbi/openai/models/live/server_event.rbi +5 -0
- data/rbi/openai/models/live/session_accept_params.rbi +88 -12
- data/rbi/openai/models/live/session_config.rbi +100 -14
- data/rbi/openai/models/live/session_resource.rbi +81 -10
- data/rbi/openai/models/live/session_update_config.rbi +86 -9
- data/rbi/openai/models/live/session_update_event.rbi +8 -8
- data/rbi/openai/models/live/sideband_client_event.rbi +40 -0
- data/rbi/openai/models/live/sideband_server_event.rbi +47 -0
- data/rbi/openai/models/realtime/realtime_audio_config_output.rbi +6 -3
- data/rbi/openai/models/realtime/realtime_response_create_audio_output.rbi +6 -3
- data/rbi/openai/models/realtime/realtime_response_status.rbi +13 -1
- data/rbi/openai/models/realtime/realtime_translation_input_audio_buffer_append_event.rbi +1 -1
- data/rbi/openai/models/realtime/realtime_translation_output_audio_delta_event.rbi +3 -3
- data/rbi/openai/models/realtime/realtime_translation_session_close_event.rbi +1 -1
- data/rbi/openai/models/realtime/realtime_translation_session_update_event.rbi +5 -1
- data/rbi/openai/models/responses/response.rbi +2 -7
- data/rbi/openai/models/responses/response_create_params.rbi +5 -9
- data/rbi/openai/models/responses/response_error.rbi +24 -3
- data/rbi/openai/models/responses/response_function_tool_call.rbi +0 -4
- data/rbi/openai/models/responses/response_function_web_search.rbi +21 -17
- data/rbi/openai/models/responses/response_input_item.rbi +191 -0
- data/rbi/openai/models/responses/response_item.rbi +189 -0
- data/rbi/openai/models/responses/response_output_item.rbi +191 -0
- data/rbi/openai/models/responses/response_output_text.rbi +0 -4
- data/rbi/openai/models/responses/responses_client_event.rbi +2 -2
- data/rbi/openai/models/safety/safety_alert.rbi +13 -1
- data/rbi/openai/models/video_create_error.rbi +24 -3
- data/rbi/openai/models/webhooks/unwrap_webhook_event.rbi +1 -1
- data/rbi/openai/resources/admin/organization/external_storage.rbi +2 -1
- data/rbi/openai/resources/admin/organization/projects/api_keys.rbi +48 -0
- data/rbi/openai/resources/admin/organization/usage.rbi +56 -0
- data/rbi/openai/resources/audio/speech.rbi +2 -1
- data/rbi/openai/resources/audio/voices.rbi +13 -10
- data/rbi/openai/resources/beta/agents/environments/files.rbi +3 -33
- data/rbi/openai/resources/beta/agents/environments.rbi +3 -3
- data/rbi/openai/resources/beta/agents/sessions/artifacts.rbi +5 -13
- data/rbi/openai/resources/beta/agents/sessions.rbi +15 -4
- data/rbi/openai/resources/beta/agents/vaults/credentials.rbi +9 -5
- data/rbi/openai/resources/beta/agents/vaults.rbi +34 -5
- data/rbi/openai/resources/beta/agents.rbi +6 -4
- data/rbi/openai/resources/beta/responses.rbi +2 -2
- data/rbi/openai/resources/chat/completions.rbi +26 -29
- data/rbi/openai/resources/decisions.rbi +9 -15
- data/rbi/openai/resources/files.rbi +0 -18
- data/rbi/openai/resources/live/forks.rbi +17 -0
- data/rbi/openai/resources/live/sideband.rbi +17 -0
- data/rbi/openai/resources/live.rbi +17 -0
- data/rbi/openai/resources/realtime/translations.rbi +17 -0
- data/rbi/openai/resources/realtime.rbi +17 -0
- data/rbi/openai/resources/responses.rbi +41 -333
- data/rbi/openai/resources/vector_stores/file_batches.rbi +0 -93
- data/rbi/openai/resources/vector_stores/files.rbi +0 -113
- data/rbi/openai/resources/webhooks.rbi +1 -1
- data/sig/openai/client.rbs +0 -50
- data/sig/openai/helpers/admin/organization/projects/api_keys.rbs +18 -0
- data/sig/openai/helpers/beta/agents/artifacts.rbs +17 -0
- data/sig/openai/helpers/beta/agents/files.rbs +30 -0
- data/sig/openai/helpers/client_runtime.rbs +53 -0
- data/sig/openai/helpers/files.rbs +12 -0
- data/sig/openai/helpers/models/responses/response.rbs +9 -0
- data/sig/openai/helpers/streaming/response_stream.rbs +37 -0
- data/sig/openai/helpers/vector_stores/file_batches.rbs +38 -0
- data/sig/openai/helpers/vector_stores/files.rbs +43 -0
- data/sig/openai/helpers/websocket.rbs +40 -0
- data/sig/openai/models/admin/organization/audit_log_list_response.rbs +1 -0
- data/sig/openai/models/admin/organization/external_storage_configuration.rbs +1 -0
- data/sig/openai/models/admin/organization/external_storage_create_params.rbs +33 -0
- data/sig/openai/models/admin/organization/oci_external_storage_provider.rbs +34 -0
- data/sig/openai/models/admin/organization/project_residency.rbs +6 -0
- data/sig/openai/models/admin/organization/projects/api_key_update_params.rbs +77 -0
- data/sig/openai/models/admin/organization/projects/api_key_update_scopes_params.rbs +38 -0
- data/sig/openai/models/admin/organization/usage_decisions_params.rbs +170 -0
- data/sig/openai/models/admin/organization/usage_decisions_response.rbs +319 -0
- data/sig/openai/models/audio/speech_create_params.rbs +4 -2
- data/sig/openai/models/audio/voice.rbs +21 -3
- data/sig/openai/models/audio/voice_create_params.rbs +90 -1
- data/sig/openai/models/beta/agent_create_params.rbs +4 -2
- data/sig/openai/models/beta/agent_list_params.rbs +9 -6
- data/sig/openai/models/beta/agent_session.rbs +36 -2
- data/sig/openai/models/beta/agent_update_params.rbs +4 -2
- data/sig/openai/models/beta/agents/environment_list_params.rbs +9 -9
- data/sig/openai/models/beta/agents/session_create_params.rbs +29 -2
- data/sig/openai/models/beta/agents/session_list_params.rbs +12 -12
- data/sig/openai/models/beta/agents/session_update_params.rbs +23 -0
- data/sig/openai/models/beta/agents/sessions/artifact_list_params.rbs +21 -15
- data/sig/openai/models/beta/agents/vault_list_params.rbs +32 -14
- data/sig/openai/models/beta/agents/vault_update_params.rbs +54 -0
- data/sig/openai/models/beta/agents/vaults/credential_list_params.rbs +32 -14
- data/sig/openai/models/beta/beta_response.rbs +2 -2
- data/sig/openai/models/beta/beta_response_error.rbs +19 -3
- data/sig/openai/models/beta/beta_response_input_item.rbs +110 -0
- data/sig/openai/models/beta/beta_response_item.rbs +110 -0
- data/sig/openai/models/beta/beta_response_output_item.rbs +110 -0
- data/sig/openai/models/beta/beta_responses_client_event.rbs +2 -2
- data/sig/openai/models/beta/response_create_params.rbs +2 -2
- data/sig/openai/models/beta/session_turn_error.rbs +4 -0
- data/sig/openai/models/chat/chat_completion_audio_param.rbs +2 -2
- data/sig/openai/models/chat/completion_create_params.rbs +2 -2
- data/sig/openai/models/conversations/conversation_item.rbs +110 -0
- data/sig/openai/models/decision.rbs +13 -0
- data/sig/openai/models/decision_create_params.rbs +19 -8
- data/sig/openai/models/decision_input_image.rbs +2 -2
- data/sig/openai/models/decision_input_message.rbs +2 -2
- data/sig/openai/models/live/built_in_voice.rbs +2 -0
- data/sig/openai/models/live/client_event.rbs +4 -0
- data/sig/openai/models/live/decision_create_event.rbs +18 -0
- data/sig/openai/models/live/decision_event.rbs +102 -0
- data/sig/openai/models/live/decision_item_create_event.rbs +183 -0
- data/sig/openai/models/live/decision_item_created_event.rbs +195 -0
- data/sig/openai/models/live/decision_item_delete_event.rbs +33 -0
- data/sig/openai/models/live/decision_item_deleted_event.rbs +49 -0
- data/sig/openai/models/live/decision_trigger.rbs +234 -0
- data/sig/openai/models/live/decisions_delegation_config.rbs +195 -0
- data/sig/openai/models/live/decisions_delegation_update_config.rbs +202 -0
- data/sig/openai/models/live/delegation_created_event.rbs +6 -7
- data/sig/openai/models/live/fork_client_event.rbs +4 -0
- data/sig/openai/models/live/fork_server_event.rbs +5 -0
- data/sig/openai/models/live/media_session_config.rbs +58 -11
- data/sig/openai/models/live/output_audio_fixture_play_event.rbs +42 -0
- data/sig/openai/models/live/output_audio_fixture_played_event.rbs +44 -0
- data/sig/openai/models/live/output_audio_fixture_playing_event.rbs +44 -0
- data/sig/openai/models/live/server_event.rbs +5 -0
- data/sig/openai/models/live/session_accept_params.rbs +57 -10
- data/sig/openai/models/live/session_config.rbs +58 -11
- data/sig/openai/models/live/session_resource.rbs +57 -10
- data/sig/openai/models/live/session_update_config.rbs +54 -3
- data/sig/openai/models/live/session_update_event.rbs +6 -6
- data/sig/openai/models/live/sideband_client_event.rbs +26 -0
- data/sig/openai/models/live/sideband_server_event.rbs +33 -0
- data/sig/openai/models/realtime/realtime_audio_config_output.rbs +6 -3
- data/sig/openai/models/realtime/realtime_response_create_audio_output.rbs +6 -3
- data/sig/openai/models/realtime/realtime_response_status.rbs +15 -3
- data/sig/openai/models/responses/response.rbs +2 -4
- data/sig/openai/models/responses/response_create_params.rbs +2 -2
- data/sig/openai/models/responses/response_error.rbs +19 -3
- data/sig/openai/models/responses/response_input_item.rbs +110 -0
- data/sig/openai/models/responses/response_item.rbs +110 -0
- data/sig/openai/models/responses/response_output_item.rbs +110 -0
- data/sig/openai/models/responses/responses_client_event.rbs +2 -2
- data/sig/openai/models/safety/safety_alert.rbs +12 -2
- data/sig/openai/models/video_create_error.rbs +19 -3
- data/sig/openai/models/webhooks/unwrap_webhook_event.rbs +1 -1
- data/sig/openai/resources/admin/organization/projects/api_keys.rbs +8 -0
- data/sig/openai/resources/admin/organization/usage.rbs +15 -0
- data/sig/openai/resources/beta/agents/environments/files.rbs +0 -17
- data/sig/openai/resources/beta/agents/sessions/artifacts.rbs +2 -6
- data/sig/openai/resources/beta/agents/sessions.rbs +4 -1
- data/sig/openai/resources/beta/agents/vaults/credentials.rbs +2 -1
- data/sig/openai/resources/beta/agents/vaults.rbs +9 -1
- data/sig/openai/resources/beta/agents.rbs +1 -1
- data/sig/openai/resources/files.rbs +0 -7
- data/sig/openai/resources/live/forks.rbs +8 -0
- data/sig/openai/resources/live/sideband.rbs +8 -0
- data/sig/openai/resources/live.rbs +7 -0
- data/sig/openai/resources/realtime/translations.rbs +7 -0
- data/sig/openai/resources/realtime.rbs +7 -0
- data/sig/openai/resources/responses.rbs +7 -31
- data/sig/openai/resources/vector_stores/file_batches.rbs +0 -31
- data/sig/openai/resources/vector_stores/files.rbs +0 -36
- data/sig/openai/resources/webhooks.rbs +1 -1
- metadata +89 -1
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative "../../helpers/resource_polling"
|
|
4
|
-
|
|
5
3
|
module OpenAI
|
|
6
4
|
module Resources
|
|
7
5
|
class VectorStores
|
|
@@ -58,63 +56,6 @@ module OpenAI
|
|
|
58
56
|
)
|
|
59
57
|
end
|
|
60
58
|
|
|
61
|
-
# Create a vector store file batch and wait for processing to finish.
|
|
62
|
-
#
|
|
63
|
-
# The returned batch may have a `failed` or `cancelled` status; callers should
|
|
64
|
-
# inspect its status and file counts. Polling intervals and the overall timeout
|
|
65
|
-
# are in seconds. Finite timeouts include authentication and request replay
|
|
66
|
-
# time and disable transport retries so the deadline remains strict. Set
|
|
67
|
-
# `timeout` to `nil` to wait indefinitely and retain configured transport retries.
|
|
68
|
-
#
|
|
69
|
-
# @overload create_and_poll(vector_store_id, attributes: nil, chunking_strategy: nil, file_ids: nil, files: nil, poll_interval: nil, timeout: 1800.0, request_options: {})
|
|
70
|
-
#
|
|
71
|
-
# @param vector_store_id [String] The ID of the vector store for which to create a File Batch.
|
|
72
|
-
#
|
|
73
|
-
# @param attributes [Hash{Symbol=>String, Float, Boolean}, nil] Attributes to apply to each file in `file_ids`.
|
|
74
|
-
#
|
|
75
|
-
# @param chunking_strategy [OpenAI::Models::AutoFileChunkingStrategyParam, OpenAI::Models::StaticFileChunkingStrategyObjectParam] The chunking strategy used to chunk the files.
|
|
76
|
-
#
|
|
77
|
-
# @param file_ids [Array<String>] File IDs to add to the vector store.
|
|
78
|
-
#
|
|
79
|
-
# @param files [Array<OpenAI::Models::VectorStores::FileBatchCreateParams::File>] File IDs with per-file attributes or chunking strategies.
|
|
80
|
-
#
|
|
81
|
-
# @param poll_interval [Integer, Float, nil] How often to retrieve the batch. When omitted, the SDK honors the server's
|
|
82
|
-
# polling hint and otherwise waits 5 seconds.
|
|
83
|
-
#
|
|
84
|
-
# @param timeout [Integer, Float, nil] Maximum total time to poll. Defaults to 30 minutes. Set to `nil` to wait
|
|
85
|
-
# indefinitely.
|
|
86
|
-
#
|
|
87
|
-
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
88
|
-
#
|
|
89
|
-
# @raise [ArgumentError, OpenAI::Errors::PollingError]
|
|
90
|
-
# @return [OpenAI::Models::VectorStores::VectorStoreFileBatch]
|
|
91
|
-
def create_and_poll(
|
|
92
|
-
vector_store_id,
|
|
93
|
-
attributes: nil,
|
|
94
|
-
chunking_strategy: nil,
|
|
95
|
-
file_ids: nil,
|
|
96
|
-
files: nil,
|
|
97
|
-
poll_interval: nil,
|
|
98
|
-
timeout: OpenAI::Internal::Poller::DEFAULT_TIMEOUT,
|
|
99
|
-
request_options: {}
|
|
100
|
-
)
|
|
101
|
-
OpenAI::Internal::Poller.validate!(poll_interval: poll_interval, timeout: timeout)
|
|
102
|
-
|
|
103
|
-
params = {request_options: request_options}
|
|
104
|
-
params[:attributes] = attributes unless attributes.nil?
|
|
105
|
-
params[:chunking_strategy] = chunking_strategy unless chunking_strategy.nil?
|
|
106
|
-
params[:file_ids] = file_ids unless file_ids.nil?
|
|
107
|
-
params[:files] = files unless files.nil?
|
|
108
|
-
batch = create(vector_store_id, params)
|
|
109
|
-
poll(
|
|
110
|
-
batch.id,
|
|
111
|
-
vector_store_id: vector_store_id,
|
|
112
|
-
poll_interval: poll_interval,
|
|
113
|
-
timeout: timeout,
|
|
114
|
-
request_options: request_options
|
|
115
|
-
)
|
|
116
|
-
end
|
|
117
|
-
|
|
118
59
|
# Retrieves a vector store file batch.
|
|
119
60
|
#
|
|
120
61
|
# @overload retrieve(batch_id, vector_store_id:, request_options: {})
|
|
@@ -236,125 +177,6 @@ module OpenAI
|
|
|
236
177
|
)
|
|
237
178
|
end
|
|
238
179
|
|
|
239
|
-
# Wait for a vector store file batch to finish processing.
|
|
240
|
-
#
|
|
241
|
-
# The returned batch may have a `failed` or `cancelled` status; callers should
|
|
242
|
-
# inspect its status and file counts. Polling intervals and the overall timeout
|
|
243
|
-
# are in seconds. Set `timeout` to `nil` to wait indefinitely.
|
|
244
|
-
#
|
|
245
|
-
# @overload poll(batch_id, vector_store_id:, poll_interval: nil, timeout: 1800.0, request_options: {})
|
|
246
|
-
#
|
|
247
|
-
# @param batch_id [String] The ID of the file batch being retrieved.
|
|
248
|
-
#
|
|
249
|
-
# @param vector_store_id [String] The ID of the vector store that the file batch belongs to.
|
|
250
|
-
#
|
|
251
|
-
# @param poll_interval [Integer, Float, nil] How often to retrieve the batch. When omitted, the SDK honors the server's
|
|
252
|
-
# polling hint and otherwise waits 5 seconds.
|
|
253
|
-
#
|
|
254
|
-
# @param timeout [Integer, Float, nil] Maximum total time to poll. Defaults to 30 minutes. Set to `nil` to wait
|
|
255
|
-
# indefinitely.
|
|
256
|
-
#
|
|
257
|
-
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
258
|
-
#
|
|
259
|
-
# @raise [ArgumentError, OpenAI::Errors::PollingError]
|
|
260
|
-
# @return [OpenAI::Models::VectorStores::VectorStoreFileBatch]
|
|
261
|
-
def poll(
|
|
262
|
-
batch_id,
|
|
263
|
-
vector_store_id:,
|
|
264
|
-
poll_interval: nil,
|
|
265
|
-
timeout: OpenAI::Internal::Poller::DEFAULT_TIMEOUT,
|
|
266
|
-
request_options: {}
|
|
267
|
-
)
|
|
268
|
-
OpenAI::Helpers::ResourcePolling.poll_vector_store_file_batch(
|
|
269
|
-
self,
|
|
270
|
-
batch_id,
|
|
271
|
-
vector_store_id: vector_store_id,
|
|
272
|
-
poll_interval: poll_interval,
|
|
273
|
-
timeout: timeout,
|
|
274
|
-
request_options: request_options
|
|
275
|
-
)
|
|
276
|
-
end
|
|
277
|
-
|
|
278
|
-
# Upload files concurrently, create a vector store file batch, and wait for
|
|
279
|
-
# processing to finish.
|
|
280
|
-
#
|
|
281
|
-
# Existing file IDs can be included alongside new uploads. Upload concurrency is
|
|
282
|
-
# bounded and defaults to 5. Set `max_concurrency` to 1 for sequential uploads.
|
|
283
|
-
# Inputs are enumerated before requests begin so the 2,000-file API limit can be
|
|
284
|
-
# checked without orphaning uploads. Stream-backed inputs are safely spooled during
|
|
285
|
-
# enumeration, including IO objects yielded from block-scoped enumerators.
|
|
286
|
-
#
|
|
287
|
-
# @overload upload_and_poll(vector_store_id, files:, file_ids: [], max_concurrency: 5, attributes: nil, chunking_strategy: nil, poll_interval: nil, timeout: 1800.0, request_options: {})
|
|
288
|
-
#
|
|
289
|
-
# @param vector_store_id [String] The ID of the vector store for which to create a File Batch.
|
|
290
|
-
#
|
|
291
|
-
# @param files [Enumerable<Pathname, StringIO, IO, String, OpenAI::FilePart>] Files to upload.
|
|
292
|
-
#
|
|
293
|
-
# @param file_ids [Array<String>] IDs of files that have already been uploaded.
|
|
294
|
-
#
|
|
295
|
-
# @param max_concurrency [Integer] Maximum number of simultaneous file uploads.
|
|
296
|
-
#
|
|
297
|
-
# @param attributes [Hash{Symbol=>String, Float, Boolean}, nil] Attributes to apply to every file.
|
|
298
|
-
#
|
|
299
|
-
# @param chunking_strategy [OpenAI::Models::AutoFileChunkingStrategyParam, OpenAI::Models::StaticFileChunkingStrategyObjectParam] The chunking strategy used to chunk the files.
|
|
300
|
-
#
|
|
301
|
-
# @param poll_interval [Integer, Float, nil] How often to retrieve the batch. When omitted, the SDK honors the server's
|
|
302
|
-
# polling hint and otherwise waits 5 seconds.
|
|
303
|
-
#
|
|
304
|
-
# @param timeout [Integer, Float, nil] Maximum total time to poll. Defaults to 30 minutes. Set to `nil` to wait
|
|
305
|
-
# indefinitely.
|
|
306
|
-
#
|
|
307
|
-
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil] Applied to every upload and to the
|
|
308
|
-
# batch creation and polling requests. Idempotency keys are scoped to each
|
|
309
|
-
# upload and the batch creation.
|
|
310
|
-
#
|
|
311
|
-
# @raise [ArgumentError, OpenAI::Errors::PollingError]
|
|
312
|
-
# @return [OpenAI::Models::VectorStores::VectorStoreFileBatch]
|
|
313
|
-
def upload_and_poll(
|
|
314
|
-
vector_store_id,
|
|
315
|
-
files:,
|
|
316
|
-
file_ids: [],
|
|
317
|
-
max_concurrency: 5,
|
|
318
|
-
attributes: nil,
|
|
319
|
-
chunking_strategy: nil,
|
|
320
|
-
poll_interval: nil,
|
|
321
|
-
timeout: OpenAI::Internal::Poller::DEFAULT_TIMEOUT,
|
|
322
|
-
request_options: {}
|
|
323
|
-
)
|
|
324
|
-
OpenAI::Internal::Poller.validate!(poll_interval: poll_interval, timeout: timeout)
|
|
325
|
-
request_options_scope = OpenAI::Internal::RequestOptionsScope.new(request_options)
|
|
326
|
-
|
|
327
|
-
max_files = OpenAI::Internal::VectorStoreFileUploader::MAX_FILES_PER_BATCH
|
|
328
|
-
if file_ids.length > max_files
|
|
329
|
-
raise ArgumentError, "`file_ids` cannot contain more than #{max_files} entries"
|
|
330
|
-
end
|
|
331
|
-
|
|
332
|
-
uploaded = OpenAI::Internal::VectorStoreFileUploader
|
|
333
|
-
.new(
|
|
334
|
-
client: @client,
|
|
335
|
-
max_concurrency: max_concurrency,
|
|
336
|
-
request_options: request_options
|
|
337
|
-
)
|
|
338
|
-
.upload(files, max_files: max_files - file_ids.length)
|
|
339
|
-
|
|
340
|
-
if uploaded.empty?
|
|
341
|
-
raise(
|
|
342
|
-
ArgumentError,
|
|
343
|
-
"No `files` provided. Use `create_and_poll` when all files are already uploaded."
|
|
344
|
-
)
|
|
345
|
-
end
|
|
346
|
-
|
|
347
|
-
create_and_poll(
|
|
348
|
-
vector_store_id,
|
|
349
|
-
file_ids: [*file_ids, *uploaded.map(&:id)],
|
|
350
|
-
attributes: attributes,
|
|
351
|
-
chunking_strategy: chunking_strategy,
|
|
352
|
-
poll_interval: poll_interval,
|
|
353
|
-
timeout: timeout,
|
|
354
|
-
request_options: request_options_scope.child("file-batch")
|
|
355
|
-
)
|
|
356
|
-
end
|
|
357
|
-
|
|
358
180
|
# @api private
|
|
359
181
|
#
|
|
360
182
|
# @param client [OpenAI::Client]
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative "../../helpers/resource_polling"
|
|
4
|
-
|
|
5
3
|
module OpenAI
|
|
6
4
|
module Resources
|
|
7
5
|
class VectorStores
|
|
@@ -51,58 +49,6 @@ module OpenAI
|
|
|
51
49
|
)
|
|
52
50
|
end
|
|
53
51
|
|
|
54
|
-
# Attach a file to a vector store and wait for processing to finish.
|
|
55
|
-
#
|
|
56
|
-
# The returned file may have a `failed` or `cancelled` status; callers should
|
|
57
|
-
# inspect the status and `last_error`. Polling intervals and the overall timeout
|
|
58
|
-
# are in seconds. Finite timeouts include authentication and request replay
|
|
59
|
-
# time and disable transport retries so the deadline remains strict. Set
|
|
60
|
-
# `timeout` to `nil` to wait indefinitely and retain configured transport retries.
|
|
61
|
-
#
|
|
62
|
-
# @overload create_and_poll(vector_store_id, file_id:, attributes: nil, chunking_strategy: nil, poll_interval: nil, timeout: 1800.0, request_options: {})
|
|
63
|
-
#
|
|
64
|
-
# @param vector_store_id [String] The ID of the vector store for which to create a File.
|
|
65
|
-
#
|
|
66
|
-
# @param file_id [String] A File ID to attach to the vector store.
|
|
67
|
-
#
|
|
68
|
-
# @param attributes [Hash{Symbol=>String, Float, Boolean}, nil] Attributes to attach to the vector store file.
|
|
69
|
-
#
|
|
70
|
-
# @param chunking_strategy [OpenAI::Models::AutoFileChunkingStrategyParam, OpenAI::Models::StaticFileChunkingStrategyObjectParam] The chunking strategy used to chunk the file.
|
|
71
|
-
#
|
|
72
|
-
# @param poll_interval [Integer, Float, nil] How often to retrieve the file. When omitted, the SDK honors the server's
|
|
73
|
-
# polling hint and otherwise waits 5 seconds.
|
|
74
|
-
#
|
|
75
|
-
# @param timeout [Integer, Float, nil] Maximum total time to poll. Defaults to 30 minutes. Set to `nil` to wait
|
|
76
|
-
# indefinitely.
|
|
77
|
-
#
|
|
78
|
-
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
79
|
-
#
|
|
80
|
-
# @raise [ArgumentError, OpenAI::Errors::PollingError]
|
|
81
|
-
# @return [OpenAI::Models::VectorStores::VectorStoreFile]
|
|
82
|
-
def create_and_poll(
|
|
83
|
-
vector_store_id,
|
|
84
|
-
file_id:,
|
|
85
|
-
attributes: nil,
|
|
86
|
-
chunking_strategy: nil,
|
|
87
|
-
poll_interval: nil,
|
|
88
|
-
timeout: OpenAI::Internal::Poller::DEFAULT_TIMEOUT,
|
|
89
|
-
request_options: {}
|
|
90
|
-
)
|
|
91
|
-
OpenAI::Internal::Poller.validate!(poll_interval: poll_interval, timeout: timeout)
|
|
92
|
-
|
|
93
|
-
params = {file_id: file_id, request_options: request_options}
|
|
94
|
-
params[:attributes] = attributes unless attributes.nil?
|
|
95
|
-
params[:chunking_strategy] = chunking_strategy unless chunking_strategy.nil?
|
|
96
|
-
file = create(vector_store_id, params)
|
|
97
|
-
poll(
|
|
98
|
-
file.id,
|
|
99
|
-
vector_store_id: vector_store_id,
|
|
100
|
-
poll_interval: poll_interval,
|
|
101
|
-
timeout: timeout,
|
|
102
|
-
request_options: request_options
|
|
103
|
-
)
|
|
104
|
-
end
|
|
105
|
-
|
|
106
52
|
# Retrieves a vector store file.
|
|
107
53
|
#
|
|
108
54
|
# @overload retrieve(file_id, vector_store_id:, request_options: {})
|
|
@@ -257,140 +203,6 @@ module OpenAI
|
|
|
257
203
|
)
|
|
258
204
|
end
|
|
259
205
|
|
|
260
|
-
# Wait for a vector store file to finish processing.
|
|
261
|
-
#
|
|
262
|
-
# The returned file may have a `failed` or `cancelled` status; callers should
|
|
263
|
-
# inspect the status and `last_error`. Polling intervals and the overall timeout
|
|
264
|
-
# are in seconds. Set `timeout` to `nil` to wait indefinitely.
|
|
265
|
-
#
|
|
266
|
-
# @overload poll(file_id, vector_store_id:, poll_interval: nil, timeout: 1800.0, request_options: {})
|
|
267
|
-
#
|
|
268
|
-
# @param file_id [String] The ID of the file being retrieved.
|
|
269
|
-
#
|
|
270
|
-
# @param vector_store_id [String] The ID of the vector store that the file belongs to.
|
|
271
|
-
#
|
|
272
|
-
# @param poll_interval [Integer, Float, nil] How often to retrieve the file. When omitted, the SDK honors the server's
|
|
273
|
-
# polling hint and otherwise waits 5 seconds.
|
|
274
|
-
#
|
|
275
|
-
# @param timeout [Integer, Float, nil] Maximum total time to poll. Defaults to 30 minutes. Set to `nil` to wait
|
|
276
|
-
# indefinitely.
|
|
277
|
-
#
|
|
278
|
-
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
279
|
-
#
|
|
280
|
-
# @raise [ArgumentError, OpenAI::Errors::PollingError]
|
|
281
|
-
# @return [OpenAI::Models::VectorStores::VectorStoreFile]
|
|
282
|
-
def poll(
|
|
283
|
-
file_id,
|
|
284
|
-
vector_store_id:,
|
|
285
|
-
poll_interval: nil,
|
|
286
|
-
timeout: OpenAI::Internal::Poller::DEFAULT_TIMEOUT,
|
|
287
|
-
request_options: {}
|
|
288
|
-
)
|
|
289
|
-
OpenAI::Helpers::ResourcePolling.poll_vector_store_file(
|
|
290
|
-
self,
|
|
291
|
-
file_id,
|
|
292
|
-
vector_store_id: vector_store_id,
|
|
293
|
-
poll_interval: poll_interval,
|
|
294
|
-
timeout: timeout,
|
|
295
|
-
request_options: request_options
|
|
296
|
-
)
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
# Upload a file and attach it to a vector store.
|
|
300
|
-
#
|
|
301
|
-
# Processing continues asynchronously; use {#upload_and_poll} to wait until the
|
|
302
|
-
# file is ready.
|
|
303
|
-
#
|
|
304
|
-
# @overload upload(vector_store_id, file:, attributes: nil, chunking_strategy: nil, request_options: {})
|
|
305
|
-
#
|
|
306
|
-
# @param vector_store_id [String] The ID of the vector store to attach the file to.
|
|
307
|
-
#
|
|
308
|
-
# @param file [Pathname, StringIO, IO, String, OpenAI::FilePart] The file to upload.
|
|
309
|
-
#
|
|
310
|
-
# @param attributes [Hash{Symbol=>String, Float, Boolean}, nil] Attributes to attach to the vector store file.
|
|
311
|
-
#
|
|
312
|
-
# @param chunking_strategy [OpenAI::Models::AutoFileChunkingStrategyParam, OpenAI::Models::StaticFileChunkingStrategyObjectParam] The chunking strategy used to chunk the file.
|
|
313
|
-
#
|
|
314
|
-
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil] Applied to the upload and attach
|
|
315
|
-
# requests. Idempotency keys are scoped to each operation.
|
|
316
|
-
#
|
|
317
|
-
# @return [OpenAI::Models::VectorStores::VectorStoreFile]
|
|
318
|
-
def upload(
|
|
319
|
-
vector_store_id,
|
|
320
|
-
file:,
|
|
321
|
-
attributes: nil,
|
|
322
|
-
chunking_strategy: nil,
|
|
323
|
-
request_options: {}
|
|
324
|
-
)
|
|
325
|
-
request_options_scope = OpenAI::Internal::RequestOptionsScope.new(request_options)
|
|
326
|
-
uploaded = @client.files.create(
|
|
327
|
-
file: file,
|
|
328
|
-
purpose: :assistants,
|
|
329
|
-
request_options: request_options_scope.child("file-upload")
|
|
330
|
-
)
|
|
331
|
-
params = {
|
|
332
|
-
file_id: uploaded.id,
|
|
333
|
-
request_options: request_options_scope.child("vector-store-file")
|
|
334
|
-
}
|
|
335
|
-
params[:attributes] = attributes unless attributes.nil?
|
|
336
|
-
params[:chunking_strategy] = chunking_strategy unless chunking_strategy.nil?
|
|
337
|
-
create(vector_store_id, params)
|
|
338
|
-
end
|
|
339
|
-
|
|
340
|
-
# Upload a file, attach it to a vector store, and wait for processing to
|
|
341
|
-
# finish.
|
|
342
|
-
#
|
|
343
|
-
# The returned file may have a `failed` or `cancelled` status; callers should
|
|
344
|
-
# inspect the status and `last_error`.
|
|
345
|
-
#
|
|
346
|
-
# @overload upload_and_poll(vector_store_id, file:, attributes: nil, chunking_strategy: nil, poll_interval: nil, timeout: 1800.0, request_options: {})
|
|
347
|
-
#
|
|
348
|
-
# @param vector_store_id [String] The ID of the vector store to attach the file to.
|
|
349
|
-
#
|
|
350
|
-
# @param file [Pathname, StringIO, IO, String, OpenAI::FilePart] The file to upload.
|
|
351
|
-
#
|
|
352
|
-
# @param attributes [Hash{Symbol=>String, Float, Boolean}, nil] Attributes to attach to the vector store file.
|
|
353
|
-
#
|
|
354
|
-
# @param chunking_strategy [OpenAI::Models::AutoFileChunkingStrategyParam, OpenAI::Models::StaticFileChunkingStrategyObjectParam] The chunking strategy used to chunk the file.
|
|
355
|
-
#
|
|
356
|
-
# @param poll_interval [Integer, Float, nil] How often to retrieve the file. When omitted, the SDK honors the server's
|
|
357
|
-
# polling hint and otherwise waits 5 seconds.
|
|
358
|
-
#
|
|
359
|
-
# @param timeout [Integer, Float, nil] Maximum total time to poll. Defaults to 30 minutes. Set to `nil` to wait
|
|
360
|
-
# indefinitely.
|
|
361
|
-
#
|
|
362
|
-
# @param request_options [OpenAI::RequestOptions, Hash{Symbol=>Object}, nil] Applied to the upload, attach,
|
|
363
|
-
# and polling requests. Idempotency keys are scoped to each write.
|
|
364
|
-
#
|
|
365
|
-
# @raise [ArgumentError, OpenAI::Errors::PollingError]
|
|
366
|
-
# @return [OpenAI::Models::VectorStores::VectorStoreFile]
|
|
367
|
-
def upload_and_poll(
|
|
368
|
-
vector_store_id,
|
|
369
|
-
file:,
|
|
370
|
-
attributes: nil,
|
|
371
|
-
chunking_strategy: nil,
|
|
372
|
-
poll_interval: nil,
|
|
373
|
-
timeout: OpenAI::Internal::Poller::DEFAULT_TIMEOUT,
|
|
374
|
-
request_options: {}
|
|
375
|
-
)
|
|
376
|
-
OpenAI::Internal::Poller.validate!(poll_interval: poll_interval, timeout: timeout)
|
|
377
|
-
|
|
378
|
-
attached = upload(
|
|
379
|
-
vector_store_id,
|
|
380
|
-
file: file,
|
|
381
|
-
attributes: attributes,
|
|
382
|
-
chunking_strategy: chunking_strategy,
|
|
383
|
-
request_options: request_options
|
|
384
|
-
)
|
|
385
|
-
poll(
|
|
386
|
-
attached.id,
|
|
387
|
-
vector_store_id: vector_store_id,
|
|
388
|
-
poll_interval: poll_interval,
|
|
389
|
-
timeout: timeout,
|
|
390
|
-
request_options: request_options
|
|
391
|
-
)
|
|
392
|
-
end
|
|
393
|
-
|
|
394
206
|
# Retrieve the parsed contents of a vector store file.
|
|
395
207
|
#
|
|
396
208
|
# @overload content(file_id, vector_store_id:, request_options: {})
|
|
@@ -200,12 +200,12 @@ module OpenAI
|
|
|
200
200
|
# Validates that the given payload was sent by OpenAI and parses the payload.
|
|
201
201
|
#
|
|
202
202
|
# @param payload [String] The raw webhook payload as a string
|
|
203
|
-
# @param headers [Hash] The webhook headers
|
|
204
|
-
# @param webhook_secret [String, nil] The webhook secret (optional, will use client webhook secret or ENV["OPENAI_WEBHOOK_SECRET"] if not provided)
|
|
205
203
|
#
|
|
206
|
-
# @
|
|
204
|
+
# @param headers [Hash{String, Symbol=>String}] The raw HTTP headers that came with the payload
|
|
207
205
|
#
|
|
208
|
-
# @
|
|
206
|
+
# @param webhook_secret [String, nil] The webhook signing key
|
|
207
|
+
#
|
|
208
|
+
# @return [OpenAI::Models::Webhooks::AgentEnvironmentExpiredWebhookEvent, OpenAI::Models::Webhooks::AgentEnvironmentFailedWebhookEvent, OpenAI::Models::Webhooks::AgentEnvironmentReadyWebhookEvent, OpenAI::Models::Webhooks::AgentEnvironmentSuspendedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionActionRequiredWebhookEvent, OpenAI::Models::Webhooks::AgentSessionCreatedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionFailedWebhookEvent, OpenAI::Models::Webhooks::AgentSessionIdleWebhookEvent, OpenAI::Models::Webhooks::AgentSessionInProgressWebhookEvent, OpenAI::Models::Webhooks::BatchCancelledWebhookEvent, OpenAI::Models::Webhooks::BatchCompletedWebhookEvent, OpenAI::Models::Webhooks::BatchExpiredWebhookEvent, OpenAI::Models::Webhooks::BatchFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunCanceledWebhookEvent, OpenAI::Models::Webhooks::EvalRunFailedWebhookEvent, OpenAI::Models::Webhooks::EvalRunSucceededWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobCancelledWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobFailedWebhookEvent, OpenAI::Models::Webhooks::FineTuningJobSucceededWebhookEvent, OpenAI::Models::Webhooks::LiveCallIncomingWebhookEvent, OpenAI::Models::Webhooks::LiveTransportIncomingWebhookEvent, OpenAI::Models::Webhooks::RealtimeCallIncomingWebhookEvent, OpenAI::Models::Webhooks::ResponseCancelledWebhookEvent, OpenAI::Models::Webhooks::ResponseCompletedWebhookEvent, OpenAI::Models::Webhooks::ResponseFailedWebhookEvent, OpenAI::Models::Webhooks::ResponseIncompleteWebhookEvent, OpenAI::Models::Webhooks::SafetyAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyDeactivationIssuedWebhookEvent, OpenAI::Models::Webhooks::SafetyOrgAlertCreatedWebhookEvent, OpenAI::Models::Webhooks::SafetyWarningIssuedWebhookEvent]
|
|
209
209
|
def unwrap(
|
|
210
210
|
payload,
|
|
211
211
|
headers = {},
|
|
@@ -219,12 +219,13 @@ module OpenAI
|
|
|
219
219
|
|
|
220
220
|
# Validates whether or not the webhook payload was sent by OpenAI.
|
|
221
221
|
#
|
|
222
|
-
# @param payload [String] The webhook payload as a string
|
|
223
|
-
#
|
|
224
|
-
# @param
|
|
225
|
-
# @param tolerance [Integer] Maximum age of the webhook in seconds (default: 300 = 5 minutes)
|
|
222
|
+
# @param payload [String] The raw webhook payload as a string
|
|
223
|
+
#
|
|
224
|
+
# @param headers [Hash{String, Symbol=>String}] The raw HTTP headers that came with the payload
|
|
226
225
|
#
|
|
227
|
-
# @
|
|
226
|
+
# @param webhook_secret [String, nil] The webhook signing key
|
|
227
|
+
#
|
|
228
|
+
# @param tolerance [Integer] Maximum age of the webhook in seconds
|
|
228
229
|
def verify_signature(
|
|
229
230
|
payload,
|
|
230
231
|
headers,
|
|
@@ -253,20 +254,10 @@ module OpenAI
|
|
|
253
254
|
end
|
|
254
255
|
|
|
255
256
|
signature_header, timestamp_header, webhook_id = normalized_headers.values_at(*header_names)
|
|
257
|
+
raise ArgumentError, "Missing required webhook-signature header" if signature_header.nil?
|
|
258
|
+
raise ArgumentError, "Missing required webhook-timestamp header" if timestamp_header.nil?
|
|
259
|
+
raise ArgumentError, "Missing required webhook-id header" if webhook_id.nil?
|
|
256
260
|
|
|
257
|
-
if signature_header.nil?
|
|
258
|
-
raise ArgumentError, "Missing required webhook-signature header"
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
if timestamp_header.nil?
|
|
262
|
-
raise ArgumentError, "Missing required webhook-timestamp header"
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
if webhook_id.nil?
|
|
266
|
-
raise ArgumentError, "Missing required webhook-id header"
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
# Validate timestamp to prevent replay attacks
|
|
270
261
|
begin
|
|
271
262
|
timestamp_seconds = timestamp_header.to_i
|
|
272
263
|
rescue ArgumentError
|
|
@@ -282,14 +273,10 @@ module OpenAI
|
|
|
282
273
|
raise OpenAI::Errors::InvalidWebhookSignatureError, "Webhook timestamp is too new"
|
|
283
274
|
end
|
|
284
275
|
|
|
285
|
-
# Extract signatures from v1,<base64> format
|
|
286
|
-
# The signature header can have multiple values, separated by spaces.
|
|
287
|
-
# Each value is in the format v1,<base64>. We should accept if any match.
|
|
288
276
|
signatures = signature_header.split.map do |part|
|
|
289
277
|
part.start_with?("v1,") ? part[3..] : part
|
|
290
278
|
end
|
|
291
279
|
|
|
292
|
-
# Decode the secret if it starts with whsec_
|
|
293
280
|
decoded_secret = if webhook_secret.start_with?("whsec_")
|
|
294
281
|
webhook_secret[6..].unpack1("m0")
|
|
295
282
|
else
|
|
@@ -298,13 +285,10 @@ module OpenAI
|
|
|
298
285
|
|
|
299
286
|
raise ArgumentError, "The webhook secret must not be empty" if decoded_secret.empty?
|
|
300
287
|
|
|
301
|
-
# Create the signed payload: {webhook_id}.{timestamp}.{payload}
|
|
302
288
|
signed_payload = "#{webhook_id}.#{timestamp_header}.#{payload}"
|
|
303
289
|
|
|
304
|
-
# Compute HMAC-SHA256 signature
|
|
305
290
|
expected_signature = [OpenSSL::HMAC.digest("sha256", decoded_secret, signed_payload)].pack("m0")
|
|
306
291
|
|
|
307
|
-
# Accept if any signature matches using timing-safe comparison
|
|
308
292
|
return if signatures.any? { |signature| OpenSSL.secure_compare(expected_signature, signature) }
|
|
309
293
|
|
|
310
294
|
raise(
|
data/lib/openai/version.rb
CHANGED
data/lib/openai.rb
CHANGED
|
@@ -152,10 +152,12 @@ require_relative "openai/models/beta/beta_response_audio_transcript_delta_event"
|
|
|
152
152
|
require_relative "openai/models/beta/beta_response_audio_done_event"
|
|
153
153
|
require_relative "openai/models/beta/beta_response_audio_delta_event"
|
|
154
154
|
require_relative "openai/models/reasoning_effort"
|
|
155
|
+
require_relative "openai/helpers/models/chat/parsed"
|
|
155
156
|
require_relative "openai/models/chat/chat_completion_message"
|
|
156
157
|
require_relative "openai/models/responses/response_input_file"
|
|
157
158
|
require_relative "openai/models/responses/response_input_image"
|
|
158
159
|
require_relative "openai/models/responses/response_input_text"
|
|
160
|
+
require_relative "openai/helpers/models/responses/parsed"
|
|
159
161
|
require_relative "openai/models/responses/response_output_text"
|
|
160
162
|
require_relative "openai/models/responses/response_output_refusal"
|
|
161
163
|
require_relative "openai/models/graders/score_model_grader"
|
|
@@ -288,6 +290,7 @@ require_relative "openai/models/admin/organization/invite_delete_params"
|
|
|
288
290
|
require_relative "openai/models/admin/organization/invite_delete_response"
|
|
289
291
|
require_relative "openai/models/admin/organization/invite_list_params"
|
|
290
292
|
require_relative "openai/models/admin/organization/invite_retrieve_params"
|
|
293
|
+
require_relative "openai/models/admin/organization/oci_external_storage_provider"
|
|
291
294
|
require_relative "openai/models/admin/organization/organization_data_retention"
|
|
292
295
|
require_relative "openai/models/admin/organization/organization_spend_alert"
|
|
293
296
|
require_relative "openai/models/admin/organization/organization_spend_alert_deleted"
|
|
@@ -304,6 +307,8 @@ require_relative "openai/models/admin/organization/projects/api_key_delete_param
|
|
|
304
307
|
require_relative "openai/models/admin/organization/projects/api_key_delete_response"
|
|
305
308
|
require_relative "openai/models/admin/organization/projects/api_key_list_params"
|
|
306
309
|
require_relative "openai/models/admin/organization/projects/api_key_retrieve_params"
|
|
310
|
+
require_relative "openai/models/admin/organization/projects/api_key_update_params"
|
|
311
|
+
require_relative "openai/models/admin/organization/projects/api_key_update_scopes_params"
|
|
307
312
|
require_relative "openai/models/admin/organization/projects/certificate_activate_params"
|
|
308
313
|
require_relative "openai/models/admin/organization/projects/certificate_activate_response"
|
|
309
314
|
require_relative "openai/models/admin/organization/projects/certificate_deactivate_params"
|
|
@@ -408,6 +413,8 @@ require_relative "openai/models/admin/organization/usage_completions_params"
|
|
|
408
413
|
require_relative "openai/models/admin/organization/usage_completions_response"
|
|
409
414
|
require_relative "openai/models/admin/organization/usage_costs_params"
|
|
410
415
|
require_relative "openai/models/admin/organization/usage_costs_response"
|
|
416
|
+
require_relative "openai/models/admin/organization/usage_decisions_params"
|
|
417
|
+
require_relative "openai/models/admin/organization/usage_decisions_response"
|
|
411
418
|
require_relative "openai/models/admin/organization/usage_embeddings_params"
|
|
412
419
|
require_relative "openai/models/admin/organization/usage_embeddings_response"
|
|
413
420
|
require_relative "openai/models/admin/organization/usage_file_search_calls_params"
|
|
@@ -556,6 +563,7 @@ require_relative "openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth
|
|
|
556
563
|
require_relative "openai/models/beta/agents/vaults/mcp_oauth_token_endpoint_auth_rotate_param"
|
|
557
564
|
require_relative "openai/models/beta/agents/vault_status"
|
|
558
565
|
require_relative "openai/models/beta/agents/vault_status_filter"
|
|
566
|
+
require_relative "openai/models/beta/agents/vault_update_params"
|
|
559
567
|
require_relative "openai/models/beta/agent_send_subagent_input_call_item"
|
|
560
568
|
require_relative "openai/models/beta/agent_session"
|
|
561
569
|
require_relative "openai/models/beta/agent_session_assistant_message"
|
|
@@ -1070,6 +1078,15 @@ require_relative "openai/models/live/commentary_appended_event"
|
|
|
1070
1078
|
require_relative "openai/models/live/commentary_append_event"
|
|
1071
1079
|
require_relative "openai/models/live/custom_voice"
|
|
1072
1080
|
require_relative "openai/models/live/data_channel_config"
|
|
1081
|
+
require_relative "openai/models/live/decision_create_event"
|
|
1082
|
+
require_relative "openai/models/live/decision_event"
|
|
1083
|
+
require_relative "openai/models/live/decision_item_created_event"
|
|
1084
|
+
require_relative "openai/models/live/decision_item_create_event"
|
|
1085
|
+
require_relative "openai/models/live/decision_item_deleted_event"
|
|
1086
|
+
require_relative "openai/models/live/decision_item_delete_event"
|
|
1087
|
+
require_relative "openai/models/live/decisions_delegation_config"
|
|
1088
|
+
require_relative "openai/models/live/decisions_delegation_update_config"
|
|
1089
|
+
require_relative "openai/models/live/decision_trigger"
|
|
1073
1090
|
require_relative "openai/models/live/delegation_created_event"
|
|
1074
1091
|
require_relative "openai/models/live/error"
|
|
1075
1092
|
require_relative "openai/models/live/error_event"
|
|
@@ -1093,6 +1110,9 @@ require_relative "openai/models/live/live_create_response"
|
|
|
1093
1110
|
require_relative "openai/models/live/media_session_config"
|
|
1094
1111
|
require_relative "openai/models/live/media_session_fork_config"
|
|
1095
1112
|
require_relative "openai/models/live/output_audio_delta_event"
|
|
1113
|
+
require_relative "openai/models/live/output_audio_fixture_played_event"
|
|
1114
|
+
require_relative "openai/models/live/output_audio_fixture_play_event"
|
|
1115
|
+
require_relative "openai/models/live/output_audio_fixture_playing_event"
|
|
1096
1116
|
require_relative "openai/models/live/output_transcript_delta_event"
|
|
1097
1117
|
require_relative "openai/models/live/response_create_event"
|
|
1098
1118
|
require_relative "openai/models/live/response_event"
|
|
@@ -1119,6 +1139,8 @@ require_relative "openai/models/live/session_updated_event"
|
|
|
1119
1139
|
require_relative "openai/models/live/session_update_event"
|
|
1120
1140
|
require_relative "openai/models/live/session_usage"
|
|
1121
1141
|
require_relative "openai/models/live/session_usage_updated_event"
|
|
1142
|
+
require_relative "openai/models/live/sideband_client_event"
|
|
1143
|
+
require_relative "openai/models/live/sideband_server_event"
|
|
1122
1144
|
require_relative "openai/models/live/thinking_appended_event"
|
|
1123
1145
|
require_relative "openai/models/live/thinking_append_event"
|
|
1124
1146
|
require_relative "openai/models/metadata"
|
|
@@ -1489,6 +1511,7 @@ require_relative "openai/models/webhooks/webhook_endpoint"
|
|
|
1489
1511
|
require_relative "openai/models/webhooks/webhook_endpoint_list"
|
|
1490
1512
|
require_relative "openai/models/webhooks/webhook_endpoint_test_result"
|
|
1491
1513
|
require_relative "openai/models/webhooks/webhook_endpoint_with_secret"
|
|
1514
|
+
require_relative "openai/helpers/models/webhooks/webhook_endpoint_with_secret"
|
|
1492
1515
|
require_relative "openai/models/webhooks/webhook_event_type_list"
|
|
1493
1516
|
require_relative "openai/models/webhooks/webhook_list_params"
|
|
1494
1517
|
require_relative "openai/models/webhooks/webhook_retrieve_params"
|
|
@@ -1539,9 +1562,11 @@ require_relative "openai/resources/batches"
|
|
|
1539
1562
|
require_relative "openai/resources/beta"
|
|
1540
1563
|
require_relative "openai/resources/beta/agents"
|
|
1541
1564
|
require_relative "openai/resources/beta/agents/environments"
|
|
1565
|
+
require_relative "openai/helpers/beta/agents/files"
|
|
1542
1566
|
require_relative "openai/resources/beta/agents/environments/files"
|
|
1543
1567
|
require_relative "openai/resources/beta/agents/environments/templates"
|
|
1544
1568
|
require_relative "openai/resources/beta/agents/sessions"
|
|
1569
|
+
require_relative "openai/helpers/beta/agents/artifacts"
|
|
1545
1570
|
require_relative "openai/resources/beta/agents/sessions/artifacts"
|
|
1546
1571
|
require_relative "openai/resources/beta/agents/sessions/events"
|
|
1547
1572
|
require_relative "openai/resources/beta/agents/sessions/items"
|
|
@@ -1621,6 +1646,10 @@ require_relative "openai/resources/vector_stores/files"
|
|
|
1621
1646
|
require_relative "openai/resources/videos"
|
|
1622
1647
|
require_relative "openai/resources/webhooks"
|
|
1623
1648
|
require_relative "openai/resources/webhooks/event_types"
|
|
1649
|
+
require_relative "openai/helpers/models/responses/response"
|
|
1650
|
+
require_relative "openai/helpers/files"
|
|
1651
|
+
require_relative "openai/helpers/vector_stores/file_batches"
|
|
1652
|
+
require_relative "openai/helpers/vector_stores/files"
|
|
1624
1653
|
require_relative "openai/helpers/streaming/response_events"
|
|
1625
1654
|
require_relative "openai/helpers/streaming/response_stream"
|
|
1626
1655
|
require_relative "openai/helpers/streaming/exceptions"
|
|
@@ -1636,3 +1665,5 @@ require_relative "openai/helpers/beta/agents/creation_stream"
|
|
|
1636
1665
|
require_relative "openai/helpers/agents/session_stream"
|
|
1637
1666
|
require_relative "openai/helpers/beta/agents/function_tool"
|
|
1638
1667
|
require_relative "openai/helpers/agents/message"
|
|
1668
|
+
|
|
1669
|
+
require_relative "openai/helpers/admin/organization/projects/api_keys"
|