#![allow(clippy::enum_variant_names)]
#![allow(clippy::struct_field_names)]
#![allow(clippy::doc_markdown)]
#![allow(clippy::too_many_lines)]
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Serialize, Deserialize)]
pub struct CreateResponseAllOf3 {
#[serde(skip_serializing_if = "Option::is_none")]
pub context_management: Option<Vec<ContextManagementParam>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub conversation: Option<ConversationParam>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include: Option<Vec<IncludeEnum>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input: Option<InputParam>,
#[serde(skip_serializing_if = "Option::is_none")]
pub instructions: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parallel_tool_calls: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub store: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stream: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stream_options: Option<ResponseStreamOptions>,
}
#[derive(Serialize, Deserialize)]
pub struct CreateResponse {
#[serde(flatten)]
pub create_model_response_properties: CreateModelResponseProperties,
#[serde(flatten)]
pub response_properties: ResponseProperties,
#[serde(flatten)]
pub create_response_all_of_3: CreateResponseAllOf3,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseAllOf3 {
#[serde(skip_serializing_if = "Option::is_none")]
pub completed_at: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub conversation: Option<Conversation2>,
pub created_at: f64,
pub error: ResponseError,
pub id: String,
pub incomplete_details: Option<ResponseAllOf3IncompleteDetails>,
pub instructions: Option<ResponseAllOf3Instructions>,
pub object: ResponseAllOf3Object,
pub output: Vec<OutputItem>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_text: Option<String>,
pub parallel_tool_calls: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<ResponseAllOf3Status>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usage: Option<ResponseUsage>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseAllOf3IncompleteDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option<ResponseAllOf3IncompleteDetailsReason>,
}
#[derive(Serialize, Deserialize)]
pub enum ResponseAllOf3IncompleteDetailsReason {
#[serde(rename = "max_output_tokens")]
MaxOutputTokens,
#[serde(rename = "content_filter")]
ContentFilter,
}
pub type ResponseAllOf3InstructionsString = Option<String>;
pub type ResponseAllOf3InstructionsArray = Option<Vec<InputItem>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ResponseAllOf3Instructions {
ResponseAllOf3InstructionsString(ResponseAllOf3InstructionsString),
ResponseAllOf3InstructionsArray(ResponseAllOf3InstructionsArray),
}
#[derive(Serialize, Deserialize)]
pub enum ResponseAllOf3Object {
#[serde(rename = "response")]
Response,
}
#[derive(Serialize, Deserialize)]
pub enum ResponseAllOf3Status {
#[serde(rename = "completed")]
Completed,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "cancelled")]
Cancelled,
#[serde(rename = "queued")]
Queued,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub struct Response {
#[serde(flatten)]
pub model_response_properties: ModelResponseProperties,
#[serde(flatten)]
pub response_properties: ResponseProperties,
#[serde(flatten)]
pub response_all_of_3: ResponseAllOf3,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseStreamEvent {
#[serde(rename = "response.audio.delta")]
ResponseAudioDelta(ResponseAudioDeltaEvent),
#[serde(rename = "response.audio.done")]
ResponseAudioDone(ResponseAudioDoneEvent),
#[serde(rename = "response.audio.transcript.delta")]
ResponseAudioTranscriptDelta(ResponseAudioTranscriptDeltaEvent),
#[serde(rename = "response.audio.transcript.done")]
ResponseAudioTranscriptDone(ResponseAudioTranscriptDoneEvent),
#[serde(rename = "response.code_interpreter_call_code.delta")]
ResponseCodeInterpreterCallCodeDelta(ResponseCodeInterpreterCallCodeDeltaEvent),
#[serde(rename = "response.code_interpreter_call_code.done")]
ResponseCodeInterpreterCallCodeDone(ResponseCodeInterpreterCallCodeDoneEvent),
#[serde(rename = "response.code_interpreter_call.completed")]
ResponseCodeInterpreterCallCompleted(ResponseCodeInterpreterCallCompletedEvent),
#[serde(rename = "response.code_interpreter_call.in_progress")]
ResponseCodeInterpreterCallInProgress(ResponseCodeInterpreterCallInProgressEvent),
#[serde(rename = "response.code_interpreter_call.interpreting")]
ResponseCodeInterpreterCallInterpreting(ResponseCodeInterpreterCallInterpretingEvent),
#[serde(rename = "response.completed")]
ResponseCompleted(ResponseCompletedEvent),
#[serde(rename = "response.content_part.added")]
ResponseContentPartAdded(ResponseContentPartAddedEvent),
#[serde(rename = "response.content_part.done")]
ResponseContentPartDone(ResponseContentPartDoneEvent),
#[serde(rename = "response.created")]
ResponseCreated(ResponseCreatedEvent),
#[serde(rename = "error")]
Error(ResponseErrorEvent),
#[serde(rename = "response.file_search_call.completed")]
ResponseFileSearchCallCompleted(ResponseFileSearchCallCompletedEvent),
#[serde(rename = "response.file_search_call.in_progress")]
ResponseFileSearchCallInProgress(ResponseFileSearchCallInProgressEvent),
#[serde(rename = "response.file_search_call.searching")]
ResponseFileSearchCallSearching(ResponseFileSearchCallSearchingEvent),
#[serde(rename = "response.function_call_arguments.delta")]
ResponseFunctionCallArgumentsDelta(ResponseFunctionCallArgumentsDeltaEvent),
#[serde(rename = "response.function_call_arguments.done")]
ResponseFunctionCallArgumentsDone(ResponseFunctionCallArgumentsDoneEvent),
#[serde(rename = "response.in_progress")]
ResponseInProgress(ResponseInProgressEvent),
#[serde(rename = "response.failed")]
ResponseFailed(ResponseFailedEvent),
#[serde(rename = "response.incomplete")]
ResponseIncomplete(ResponseIncompleteEvent),
#[serde(rename = "response.output_item.added")]
ResponseOutputItemAdded(ResponseOutputItemAddedEvent),
#[serde(rename = "response.output_item.done")]
ResponseOutputItemDone(ResponseOutputItemDoneEvent),
#[serde(rename = "response.reasoning_summary_part.added")]
ResponseReasoningSummaryPartAdded(ResponseReasoningSummaryPartAddedEvent),
#[serde(rename = "response.reasoning_summary_part.done")]
ResponseReasoningSummaryPartDone(ResponseReasoningSummaryPartDoneEvent),
#[serde(rename = "response.reasoning_summary_text.delta")]
ResponseReasoningSummaryTextDelta(ResponseReasoningSummaryTextDeltaEvent),
#[serde(rename = "response.reasoning_summary_text.done")]
ResponseReasoningSummaryTextDone(ResponseReasoningSummaryTextDoneEvent),
#[serde(rename = "response.reasoning_text.delta")]
ResponseReasoningTextDelta(ResponseReasoningTextDeltaEvent),
#[serde(rename = "response.reasoning_text.done")]
ResponseReasoningTextDone(ResponseReasoningTextDoneEvent),
#[serde(rename = "response.refusal.delta")]
ResponseRefusalDelta(ResponseRefusalDeltaEvent),
#[serde(rename = "response.refusal.done")]
ResponseRefusalDone(ResponseRefusalDoneEvent),
#[serde(rename = "response.output_text.delta")]
ResponseOutputTextDelta(ResponseTextDeltaEvent),
#[serde(rename = "response.output_text.done")]
ResponseOutputTextDone(ResponseTextDoneEvent),
#[serde(rename = "response.web_search_call.completed")]
ResponseWebSearchCallCompleted(ResponseWebSearchCallCompletedEvent),
#[serde(rename = "response.web_search_call.in_progress")]
ResponseWebSearchCallInProgress(ResponseWebSearchCallInProgressEvent),
#[serde(rename = "response.web_search_call.searching")]
ResponseWebSearchCallSearching(ResponseWebSearchCallSearchingEvent),
#[serde(rename = "response.image_generation_call.completed")]
ResponseImageGenerationCallCompleted(ResponseImageGenCallCompletedEvent),
#[serde(rename = "response.image_generation_call.generating")]
ResponseImageGenerationCallGenerating(ResponseImageGenCallGeneratingEvent),
#[serde(rename = "response.image_generation_call.in_progress")]
ResponseImageGenerationCallInProgress(ResponseImageGenCallInProgressEvent),
#[serde(rename = "response.image_generation_call.partial_image")]
ResponseImageGenerationCallPartialImage(ResponseImageGenCallPartialImageEvent),
#[serde(rename = "response.mcp_call_arguments.delta")]
ResponseMcpCallArgumentsDelta(ResponseMCPCallArgumentsDeltaEvent),
#[serde(rename = "response.mcp_call_arguments.done")]
ResponseMcpCallArgumentsDone(ResponseMCPCallArgumentsDoneEvent),
#[serde(rename = "response.mcp_call.completed")]
ResponseMcpCallCompleted(ResponseMCPCallCompletedEvent),
#[serde(rename = "response.mcp_call.failed")]
ResponseMcpCallFailed(ResponseMCPCallFailedEvent),
#[serde(rename = "response.mcp_call.in_progress")]
ResponseMcpCallInProgress(ResponseMCPCallInProgressEvent),
#[serde(rename = "response.mcp_list_tools.completed")]
ResponseMcpListToolsCompleted(ResponseMCPListToolsCompletedEvent),
#[serde(rename = "response.mcp_list_tools.failed")]
ResponseMcpListToolsFailed(ResponseMCPListToolsFailedEvent),
#[serde(rename = "response.mcp_list_tools.in_progress")]
ResponseMcpListToolsInProgress(ResponseMCPListToolsInProgressEvent),
#[serde(rename = "response.output_text.annotation.added")]
ResponseOutputTextAnnotationAdded(ResponseOutputTextAnnotationAddedEvent),
#[serde(rename = "response.queued")]
ResponseQueued(ResponseQueuedEvent),
#[serde(rename = "response.custom_tool_call_input.delta")]
ResponseCustomToolCallInputDelta(ResponseCustomToolCallInputDeltaEvent),
#[serde(rename = "response.custom_tool_call_input.done")]
ResponseCustomToolCallInputDone(ResponseCustomToolCallInputDoneEvent),
}
#[derive(Serialize, Deserialize)]
pub struct CreateModelResponsePropertiesAllOf2 {
#[serde(skip_serializing_if = "Option::is_none")]
pub top_logprobs: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub struct CreateModelResponseProperties {
#[serde(flatten)]
pub model_response_properties: ModelResponseProperties,
#[serde(flatten)]
pub create_model_response_properties_all_of_2: CreateModelResponsePropertiesAllOf2,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub background: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_output_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_tool_calls: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model: Option<ModelIdsResponses>,
#[serde(skip_serializing_if = "Option::is_none")]
pub previous_response_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt: Option<Prompt>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reasoning: Option<Reasoning>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text: Option<ResponseTextParam>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_choice: Option<ToolChoiceParam>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tools: Option<ToolsArray>,
#[serde(skip_serializing_if = "Option::is_none")]
pub truncation: Option<ResponsePropertiesTruncation>,
}
#[derive(Serialize, Deserialize)]
pub enum ResponsePropertiesTruncation {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "disabled")]
Disabled,
}
#[derive(Serialize, Deserialize)]
pub struct ContextManagementParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub compact_threshold: Option<i64>,
pub r#type: String,
}
pub type ConversationParamString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ConversationParam {
ConversationParamString(ConversationParamString),
ConversationParam2(ConversationParam2),
}
#[derive(Serialize, Deserialize)]
pub enum IncludeEnum {
#[serde(rename = "file_search_call.results")]
FileSearchCallResults,
#[serde(rename = "web_search_call.results")]
WebSearchCallResults,
#[serde(rename = "web_search_call.action.sources")]
WebSearchCallActionSources,
#[serde(rename = "message.input_image.image_url")]
MessageInputImageImageUrl,
#[serde(rename = "computer_call_output.output.image_url")]
ComputerCallOutputOutputImageUrl,
#[serde(rename = "code_interpreter_call.outputs")]
CodeInterpreterCallOutputs,
#[serde(rename = "reasoning.encrypted_content")]
ReasoningEncryptedContent,
#[serde(rename = "message.output_text.logprobs")]
MessageOutputTextLogprobs,
}
pub type InputParamString = Option<String>;
pub type InputParamArray = Option<Vec<InputItem>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum InputParam {
InputParamString(InputParamString),
InputParamArray(InputParamArray),
}
#[derive(Serialize, Deserialize)]
pub struct ResponseStreamOptionsValue {
#[serde(skip_serializing_if = "Option::is_none")]
pub include_obfuscation: Option<bool>,
}
pub type ResponseStreamOptions = Option<Option<ResponseStreamOptionsValue>>;
#[derive(Serialize, Deserialize)]
pub struct ModelResponseProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt_cache_key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt_cache_retention: Option<ModelResponsePropertiesPromptCacheRetention>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_identifier: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub service_tier: Option<ServiceTier>,
#[serde(skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_logprobs: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_p: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub enum ModelResponsePropertiesPromptCacheRetention {
#[serde(rename = "in-memory")]
InMemory,
#[serde(rename = "24h")]
N24H,
}
#[derive(Serialize, Deserialize)]
pub struct Conversation2 {
pub id: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseErrorValue {
pub code: ResponseErrorCode,
pub message: String,
}
pub type ResponseError = Option<Option<ResponseErrorValue>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum InputItem {
EasyInputMessage(EasyInputMessage),
Item(Item),
ItemReferenceParam(ItemReferenceParam),
}
#[derive(Serialize)]
#[serde(tag = "type")]
pub enum OutputItem {
#[serde(rename = "message")]
Message(OutputMessage),
#[serde(rename = "file_search_call")]
FileSearchCall(FileSearchToolCall),
#[serde(rename = "function_call")]
FunctionCall(FunctionToolCall),
#[serde(rename = "web_search_call")]
WebSearchCall(WebSearchToolCall),
#[serde(rename = "computer_call")]
ComputerCall(ComputerToolCall),
#[serde(rename = "reasoning")]
Reasoning(ReasoningItem),
#[serde(rename = "tool_search_call")]
ToolSearchCall(ToolSearchCall),
#[serde(rename = "tool_search_output")]
ToolSearchOutput(ToolSearchOutput),
#[serde(rename = "compaction")]
Compaction(CompactionBody),
#[serde(rename = "image_generation_call")]
ImageGenerationCall(ImageGenToolCall),
#[serde(rename = "code_interpreter_call")]
CodeInterpreterCall(CodeInterpreterToolCall),
#[serde(rename = "local_shell_call")]
LocalShellCall(LocalShellToolCall),
#[serde(rename = "shell_call")]
ShellCall(FunctionShellCall),
#[serde(rename = "shell_call_output")]
ShellCallOutput(FunctionShellCallOutput),
#[serde(rename = "apply_patch_call")]
ApplyPatchCall(ApplyPatchToolCall),
#[serde(rename = "apply_patch_call_output")]
ApplyPatchCallOutput(ApplyPatchToolCallOutput),
#[serde(rename = "mcp_call")]
McpCall(MCPToolCall),
#[serde(rename = "mcp_list_tools")]
McpListTools(MCPListTools),
#[serde(rename = "mcp_approval_request")]
McpApprovalRequest(MCPApprovalRequest),
#[serde(rename = "custom_tool_call")]
CustomToolCall(CustomToolCall),
}
impl<'de> Deserialize<'de> for OutputItem {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Value::deserialize(deserializer)?;
let type_str = value
.get("type")
.and_then(Value::as_str)
.ok_or_else(|| serde::de::Error::missing_field("type"))?;
match type_str {
"message" => serde_json::from_value(value)
.map(Self::Message)
.map_err(serde::de::Error::custom),
"file_search_call" => serde_json::from_value(value)
.map(Self::FileSearchCall)
.map_err(serde::de::Error::custom),
"function_call" => serde_json::from_value(value)
.map(Self::FunctionCall)
.map_err(serde::de::Error::custom),
"web_search_call" => serde_json::from_value(value)
.map(Self::WebSearchCall)
.map_err(serde::de::Error::custom),
"computer_call" => serde_json::from_value(value)
.map(Self::ComputerCall)
.map_err(serde::de::Error::custom),
"reasoning" => serde_json::from_value(value)
.map(Self::Reasoning)
.map_err(serde::de::Error::custom),
"tool_search_call" => serde_json::from_value(value)
.map(Self::ToolSearchCall)
.map_err(serde::de::Error::custom),
"tool_search_output" => serde_json::from_value(value)
.map(Self::ToolSearchOutput)
.map_err(serde::de::Error::custom),
"compaction" => serde_json::from_value(value)
.map(Self::Compaction)
.map_err(serde::de::Error::custom),
"image_generation_call" => serde_json::from_value(value)
.map(Self::ImageGenerationCall)
.map_err(serde::de::Error::custom),
"code_interpreter_call" => serde_json::from_value(value)
.map(Self::CodeInterpreterCall)
.map_err(serde::de::Error::custom),
"local_shell_call" => serde_json::from_value(value)
.map(Self::LocalShellCall)
.map_err(serde::de::Error::custom),
"shell_call" => serde_json::from_value(value)
.map(Self::ShellCall)
.map_err(serde::de::Error::custom),
"shell_call_output" => serde_json::from_value(value)
.map(Self::ShellCallOutput)
.map_err(serde::de::Error::custom),
"apply_patch_call" => serde_json::from_value(value)
.map(Self::ApplyPatchCall)
.map_err(serde::de::Error::custom),
"apply_patch_call_output" => serde_json::from_value(value)
.map(Self::ApplyPatchCallOutput)
.map_err(serde::de::Error::custom),
"mcp_call" => serde_json::from_value(value)
.map(Self::McpCall)
.map_err(serde::de::Error::custom),
"mcp_list_tools" => serde_json::from_value(value)
.map(Self::McpListTools)
.map_err(serde::de::Error::custom),
"mcp_approval_request" => serde_json::from_value(value)
.map(Self::McpApprovalRequest)
.map_err(serde::de::Error::custom),
"custom_tool_call" => serde_json::from_value(value)
.map(Self::CustomToolCall)
.map_err(serde::de::Error::custom),
_ => Err(serde::de::Error::unknown_variant(
type_str,
&[
"message",
"file_search_call",
"function_call",
"web_search_call",
"computer_call",
"reasoning",
"tool_search_call",
"tool_search_output",
"compaction",
"image_generation_call",
"code_interpreter_call",
"local_shell_call",
"shell_call",
"shell_call_output",
"apply_patch_call",
"apply_patch_call_output",
"mcp_call",
"mcp_list_tools",
"mcp_approval_request",
"custom_tool_call",
],
)),
}
}
}
#[derive(Serialize, Deserialize)]
pub struct ResponseUsage {
pub input_tokens: i64,
pub input_tokens_details: ResponseUsageInputTokensDetails,
pub output_tokens: i64,
pub output_tokens_details: ResponseUsageOutputTokensDetails,
pub total_tokens: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseUsageInputTokensDetails {
pub cached_tokens: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseUsageOutputTokensDetails {
pub reasoning_tokens: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseAudioDeltaEvent {
pub delta: String,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseAudioDoneEvent {
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseAudioTranscriptDeltaEvent {
pub delta: String,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseAudioTranscriptDoneEvent {
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCodeInterpreterCallCodeDeltaEvent {
pub delta: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCodeInterpreterCallCodeDoneEvent {
pub code: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCodeInterpreterCallCompletedEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCodeInterpreterCallInProgressEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCodeInterpreterCallInterpretingEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCompletedEvent {
pub response: Response,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseContentPartAddedEvent {
pub content_index: i64,
pub item_id: String,
pub output_index: i64,
pub part: OutputContent,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseContentPartDoneEvent {
pub content_index: i64,
pub item_id: String,
pub output_index: i64,
pub part: OutputContent,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCreatedEvent {
pub response: Response,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseErrorEvent {
pub code: Option<String>,
pub message: String,
pub param: Option<String>,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFileSearchCallCompletedEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFileSearchCallInProgressEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFileSearchCallSearchingEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFunctionCallArgumentsDeltaEvent {
pub delta: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFunctionCallArgumentsDoneEvent {
pub arguments: String,
pub item_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseInProgressEvent {
pub response: Response,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFailedEvent {
pub response: Response,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseIncompleteEvent {
pub response: Response,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseOutputItemAddedEvent {
pub item: OutputItem,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseOutputItemDoneEvent {
pub item: OutputItem,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseReasoningSummaryPartAddedEvent {
pub item_id: String,
pub output_index: i64,
pub part: ResponseReasoningSummaryPartAddedEventPart,
pub sequence_number: i64,
pub summary_index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseReasoningSummaryPartAddedEventPart {
pub text: String,
pub r#type: ResponseReasoningSummaryPartAddedEventPartType,
}
#[derive(Serialize, Deserialize)]
pub enum ResponseReasoningSummaryPartAddedEventPartType {
#[serde(rename = "summary_text")]
SummaryText,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseReasoningSummaryPartDoneEvent {
pub item_id: String,
pub output_index: i64,
pub part: ResponseReasoningSummaryPartDoneEventPart,
pub sequence_number: i64,
pub summary_index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseReasoningSummaryPartDoneEventPart {
pub text: String,
pub r#type: ResponseReasoningSummaryPartDoneEventPartType,
}
#[derive(Serialize, Deserialize)]
pub enum ResponseReasoningSummaryPartDoneEventPartType {
#[serde(rename = "summary_text")]
SummaryText,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseReasoningSummaryTextDeltaEvent {
pub delta: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
pub summary_index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseReasoningSummaryTextDoneEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
pub summary_index: i64,
pub text: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseReasoningTextDeltaEvent {
pub content_index: i64,
pub delta: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseReasoningTextDoneEvent {
pub content_index: i64,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
pub text: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseRefusalDeltaEvent {
pub content_index: i64,
pub delta: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseRefusalDoneEvent {
pub content_index: i64,
pub item_id: String,
pub output_index: i64,
pub refusal: String,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseTextDeltaEvent {
pub content_index: i64,
pub delta: String,
pub item_id: String,
pub logprobs: Vec<ResponseLogProb>,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseTextDoneEvent {
pub content_index: i64,
pub item_id: String,
pub logprobs: Vec<ResponseLogProb>,
pub output_index: i64,
pub sequence_number: i64,
pub text: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebSearchCallCompletedEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebSearchCallInProgressEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebSearchCallSearchingEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseImageGenCallCompletedEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseImageGenCallGeneratingEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseImageGenCallInProgressEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseImageGenCallPartialImageEvent {
#[serde(skip_serializing_if = "Option::is_none")]
pub background: Option<ResponseImageGenCallPartialImageEventBackground>,
pub item_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_format: Option<String>,
pub output_index: i64,
#[serde(rename = "partial_image_b64")]
pub partial_image_b_64: String,
pub partial_image_index: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub quality: Option<ResponseImageGenCallPartialImageEventQuality>,
pub sequence_number: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub enum ResponseImageGenCallPartialImageEventBackground {
#[serde(rename = "transparent")]
Transparent,
#[serde(rename = "opaque")]
Opaque,
#[serde(rename = "auto")]
Auto,
}
#[derive(Serialize, Deserialize)]
pub enum ResponseImageGenCallPartialImageEventQuality {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
#[serde(rename = "auto")]
Auto,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseMCPCallArgumentsDeltaEvent {
pub delta: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseMCPCallArgumentsDoneEvent {
pub arguments: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseMCPCallCompletedEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseMCPCallFailedEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseMCPCallInProgressEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseMCPListToolsCompletedEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseMCPListToolsFailedEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseMCPListToolsInProgressEvent {
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseOutputTextAnnotationAddedEvent {
pub annotation: Value,
pub annotation_index: i64,
pub content_index: i64,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseQueuedEvent {
pub response: Response,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCustomToolCallInputDeltaEvent {
pub delta: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCustomToolCallInputDoneEvent {
pub input: String,
pub item_id: String,
pub output_index: i64,
pub sequence_number: i64,
}
pub type ModelIdsResponses = Option<String>;
#[derive(Serialize, Deserialize)]
pub struct PromptValue {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub variables: Option<ResponsePromptVariables>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
pub type Prompt = Option<Option<PromptValue>>;
#[derive(Serialize, Deserialize)]
pub struct Reasoning {
#[serde(skip_serializing_if = "Option::is_none")]
pub effort: Option<ReasoningEffort>,
#[serde(skip_serializing_if = "Option::is_none")]
pub generate_summary: Option<ReasoningGenerateSummary>,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary: Option<ReasoningSummary>,
}
#[derive(Serialize, Deserialize)]
pub enum ReasoningGenerateSummary {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "concise")]
Concise,
#[serde(rename = "detailed")]
Detailed,
}
#[derive(Serialize, Deserialize)]
pub enum ReasoningSummary {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "concise")]
Concise,
#[serde(rename = "detailed")]
Detailed,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseTextParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<TextResponseFormatConfiguration>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verbosity: Option<Verbosity>,
}
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ToolChoiceParam {
ToolChoiceOptions(ToolChoiceOptions),
ToolChoiceAllowed(ToolChoiceAllowed),
ToolChoiceTypes(ToolChoiceTypes),
ToolChoiceFunction(ToolChoiceFunction),
ToolChoiceMCP(ToolChoiceMCP),
ToolChoiceCustom(ToolChoiceCustom),
SpecificApplyPatchParam(SpecificApplyPatchParam),
SpecificFunctionShellParam(SpecificFunctionShellParam),
}
pub type ToolsArray = Option<Vec<Tool>>;
#[derive(Serialize, Deserialize)]
pub struct ConversationParam2 {
pub id: String,
}
pub type Metadata = Option<Option<HashMap<String, String>>>;
#[derive(Serialize, Deserialize)]
pub enum ServiceTierValue {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "default")]
Default,
#[serde(rename = "flex")]
Flex,
#[serde(rename = "scale")]
Scale,
#[serde(rename = "priority")]
Priority,
}
pub type ServiceTier = Option<Option<ServiceTierValue>>;
#[derive(Serialize, Deserialize)]
pub enum ResponseErrorCode {
#[serde(rename = "server_error")]
ServerError,
#[serde(rename = "rate_limit_exceeded")]
RateLimitExceeded,
#[serde(rename = "invalid_prompt")]
InvalidPrompt,
#[serde(rename = "vector_store_timeout")]
VectorStoreTimeout,
#[serde(rename = "invalid_image")]
InvalidImage,
#[serde(rename = "invalid_image_format")]
InvalidImageFormat,
#[serde(rename = "invalid_base64_image")]
InvalidBase64Image,
#[serde(rename = "invalid_image_url")]
InvalidImageUrl,
#[serde(rename = "image_too_large")]
ImageTooLarge,
#[serde(rename = "image_too_small")]
ImageTooSmall,
#[serde(rename = "image_parse_error")]
ImageParseError,
#[serde(rename = "image_content_policy_violation")]
ImageContentPolicyViolation,
#[serde(rename = "invalid_image_mode")]
InvalidImageMode,
#[serde(rename = "image_file_too_large")]
ImageFileTooLarge,
#[serde(rename = "unsupported_image_media_type")]
UnsupportedImageMediaType,
#[serde(rename = "empty_image_file")]
EmptyImageFile,
#[serde(rename = "failed_to_download_image")]
FailedToDownloadImage,
#[serde(rename = "image_file_not_found")]
ImageFileNotFound,
}
#[derive(Serialize, Deserialize)]
pub struct EasyInputMessage {
pub content: EasyInputMessageContent,
#[serde(skip_serializing_if = "Option::is_none")]
pub phase: Option<MessagePhase>,
pub role: EasyInputMessageRole,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<EasyInputMessageType>,
}
pub type EasyInputMessageContentString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum EasyInputMessageContent {
EasyInputMessageContentString(EasyInputMessageContentString),
InputMessageContentList(InputMessageContentList),
}
#[derive(Serialize, Deserialize)]
pub enum EasyInputMessageRole {
#[serde(rename = "user")]
User,
#[serde(rename = "assistant")]
Assistant,
#[serde(rename = "system")]
System,
#[serde(rename = "developer")]
Developer,
}
#[derive(Serialize, Deserialize)]
pub enum EasyInputMessageType {
#[serde(rename = "message")]
Message,
}
#[derive(Serialize)]
#[serde(untagged)]
pub enum Item {
InputMessage(InputMessage),
OutputMessage(OutputMessage),
FileSearchToolCall(FileSearchToolCall),
ComputerToolCall(ComputerToolCall),
ComputerCallOutputItemParam(ComputerCallOutputItemParam),
WebSearchToolCall(WebSearchToolCall),
FunctionToolCall(FunctionToolCall),
FunctionCallOutputItemParam(FunctionCallOutputItemParam),
ToolSearchCallItemParam(ToolSearchCallItemParam),
ToolSearchOutputItemParam(ToolSearchOutputItemParam),
ReasoningItem(ReasoningItem),
CompactionSummaryItemParam(CompactionSummaryItemParam),
ImageGenToolCall(ImageGenToolCall),
CodeInterpreterToolCall(CodeInterpreterToolCall),
LocalShellToolCall(LocalShellToolCall),
LocalShellToolCallOutput(LocalShellToolCallOutput),
FunctionShellCallItemParam(FunctionShellCallItemParam),
FunctionShellCallOutputItemParam(FunctionShellCallOutputItemParam),
ApplyPatchToolCallItemParam(ApplyPatchToolCallItemParam),
ApplyPatchToolCallOutputItemParam(ApplyPatchToolCallOutputItemParam),
MCPListTools(MCPListTools),
MCPApprovalRequest(MCPApprovalRequest),
MCPApprovalResponse(MCPApprovalResponse),
MCPToolCall(MCPToolCall),
CustomToolCallOutput(CustomToolCallOutput),
CustomToolCall(CustomToolCall),
}
impl<'de> Deserialize<'de> for Item {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = Value::deserialize(deserializer)?;
let type_str = value
.get("type")
.and_then(Value::as_str)
.ok_or_else(|| serde::de::Error::missing_field("type"))?;
match type_str {
"message" => {
let role = value
.get("role")
.and_then(Value::as_str)
.ok_or_else(|| serde::de::Error::missing_field("role"))?;
if role == "assistant" && value.get("id").is_some() {
serde_json::from_value(value)
.map(Self::OutputMessage)
.map_err(serde::de::Error::custom)
} else {
serde_json::from_value(value)
.map(Self::InputMessage)
.map_err(serde::de::Error::custom)
}
}
"file_search_call" => serde_json::from_value(value)
.map(Self::FileSearchToolCall)
.map_err(serde::de::Error::custom),
"computer_call" => serde_json::from_value(value)
.map(Self::ComputerToolCall)
.map_err(serde::de::Error::custom),
"computer_call_output" => serde_json::from_value(value)
.map(Self::ComputerCallOutputItemParam)
.map_err(serde::de::Error::custom),
"web_search_call" => serde_json::from_value(value)
.map(Self::WebSearchToolCall)
.map_err(serde::de::Error::custom),
"function_call" => serde_json::from_value(value)
.map(Self::FunctionToolCall)
.map_err(serde::de::Error::custom),
"function_call_output" => serde_json::from_value(value)
.map(Self::FunctionCallOutputItemParam)
.map_err(serde::de::Error::custom),
"tool_search_call" => serde_json::from_value(value)
.map(Self::ToolSearchCallItemParam)
.map_err(serde::de::Error::custom),
"tool_search_output" => serde_json::from_value(value)
.map(Self::ToolSearchOutputItemParam)
.map_err(serde::de::Error::custom),
"reasoning" => serde_json::from_value(value)
.map(Self::ReasoningItem)
.map_err(serde::de::Error::custom),
"compaction" => serde_json::from_value(value)
.map(Self::CompactionSummaryItemParam)
.map_err(serde::de::Error::custom),
"image_generation_call" => serde_json::from_value(value)
.map(Self::ImageGenToolCall)
.map_err(serde::de::Error::custom),
"code_interpreter_call" => serde_json::from_value(value)
.map(Self::CodeInterpreterToolCall)
.map_err(serde::de::Error::custom),
"local_shell_call" => serde_json::from_value(value)
.map(Self::LocalShellToolCall)
.map_err(serde::de::Error::custom),
"local_shell_call_output" => serde_json::from_value(value)
.map(Self::LocalShellToolCallOutput)
.map_err(serde::de::Error::custom),
"shell_call" => serde_json::from_value(value)
.map(Self::FunctionShellCallItemParam)
.map_err(serde::de::Error::custom),
"shell_call_output" => serde_json::from_value(value)
.map(Self::FunctionShellCallOutputItemParam)
.map_err(serde::de::Error::custom),
"apply_patch_call" => serde_json::from_value(value)
.map(Self::ApplyPatchToolCallItemParam)
.map_err(serde::de::Error::custom),
"apply_patch_call_output" => serde_json::from_value(value)
.map(Self::ApplyPatchToolCallOutputItemParam)
.map_err(serde::de::Error::custom),
"mcp_list_tools" => serde_json::from_value(value)
.map(Self::MCPListTools)
.map_err(serde::de::Error::custom),
"mcp_approval_request" => serde_json::from_value(value)
.map(Self::MCPApprovalRequest)
.map_err(serde::de::Error::custom),
"mcp_approval_response" => serde_json::from_value(value)
.map(Self::MCPApprovalResponse)
.map_err(serde::de::Error::custom),
"mcp_call" => serde_json::from_value(value)
.map(Self::MCPToolCall)
.map_err(serde::de::Error::custom),
"custom_tool_call_output" => serde_json::from_value(value)
.map(Self::CustomToolCallOutput)
.map_err(serde::de::Error::custom),
"custom_tool_call" => serde_json::from_value(value)
.map(Self::CustomToolCall)
.map_err(serde::de::Error::custom),
_ => Err(serde::de::Error::unknown_variant(
type_str,
&[
"message",
"file_search_call",
"computer_call",
"computer_call_output",
"web_search_call",
"function_call",
"function_call_output",
"tool_search_call",
"tool_search_output",
"reasoning",
"compaction",
"image_generation_call",
"code_interpreter_call",
"local_shell_call",
"local_shell_call_output",
"shell_call",
"shell_call_output",
"apply_patch_call",
"apply_patch_call_output",
"mcp_list_tools",
"mcp_approval_request",
"mcp_approval_response",
"mcp_call",
"custom_tool_call_output",
"custom_tool_call",
],
)),
}
}
}
#[derive(Serialize, Deserialize)]
pub struct ItemReferenceParam {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<ItemReferenceParamType>,
}
#[derive(Serialize, Deserialize)]
pub enum ItemReferenceParamType {
#[serde(rename = "item_reference")]
ItemReference,
}
#[derive(Serialize, Deserialize)]
pub struct OutputMessage {
pub content: Vec<OutputMessageContent>,
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub phase: Option<MessagePhase>,
pub role: OutputMessageRole,
pub status: OutputMessageStatus,
pub r#type: OutputMessageType,
}
#[derive(Serialize, Deserialize)]
pub enum OutputMessageRole {
#[serde(rename = "assistant")]
Assistant,
}
#[derive(Serialize, Deserialize)]
pub enum OutputMessageStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub enum OutputMessageType {
#[serde(rename = "message")]
Message,
}
#[derive(Serialize, Deserialize)]
pub struct FileSearchToolCall {
pub id: String,
pub queries: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub results: Option<Vec<FileSearchToolCallResultsItem>>,
pub status: FileSearchToolCallStatus,
pub r#type: FileSearchToolCallType,
}
#[derive(Serialize, Deserialize)]
pub struct FileSearchToolCallResultsItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<VectorStoreFileAttributes>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filename: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub score: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub enum FileSearchToolCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "searching")]
Searching,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
#[serde(rename = "failed")]
Failed,
}
#[derive(Serialize, Deserialize)]
pub enum FileSearchToolCallType {
#[serde(rename = "file_search_call")]
FileSearchCall,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionToolCall {
pub arguments: String,
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<FunctionToolCallStatus>,
pub r#type: FunctionToolCallType,
}
#[derive(Serialize, Deserialize)]
pub enum FunctionToolCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub enum FunctionToolCallType {
#[serde(rename = "function_call")]
FunctionCall,
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchToolCall {
pub action: WebSearchToolCallAction,
pub id: String,
pub status: WebSearchToolCallStatus,
pub r#type: WebSearchToolCallType,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum WebSearchToolCallAction {
#[serde(rename = "search")]
Search(WebSearchActionSearch),
#[serde(rename = "open_page")]
OpenPage(WebSearchActionOpenPage),
#[serde(rename = "find_in_page")]
FindInPage(WebSearchActionFind),
}
#[derive(Serialize, Deserialize)]
pub enum WebSearchToolCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "searching")]
Searching,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "failed")]
Failed,
}
#[derive(Serialize, Deserialize)]
pub enum WebSearchToolCallType {
#[serde(rename = "web_search_call")]
WebSearchCall,
}
#[derive(Serialize, Deserialize)]
pub struct ComputerToolCall {
#[serde(skip_serializing_if = "Option::is_none")]
pub action: Option<ComputerAction>,
#[serde(skip_serializing_if = "Option::is_none")]
pub actions: Option<ComputerActionList>,
pub call_id: String,
pub id: String,
pub pending_safety_checks: Vec<ComputerCallSafetyCheckParam>,
pub status: ComputerToolCallStatus,
pub r#type: ComputerToolCallType,
}
#[derive(Serialize, Deserialize)]
pub enum ComputerToolCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub enum ComputerToolCallType {
#[serde(rename = "computer_call")]
ComputerCall,
}
#[derive(Serialize, Deserialize)]
pub struct ReasoningItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<Vec<ReasoningTextContent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub encrypted_content: Option<String>,
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<ReasoningItemStatus>,
pub summary: Vec<SummaryTextContent>,
pub r#type: ReasoningItemType,
}
#[derive(Serialize, Deserialize)]
pub enum ReasoningItemStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub enum ReasoningItemType {
#[serde(rename = "reasoning")]
Reasoning,
}
#[derive(Serialize, Deserialize)]
pub struct ToolSearchCall {
pub arguments: Value,
pub call_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
pub execution: ToolSearchExecutionType,
pub id: String,
pub status: FunctionCallStatus,
}
#[derive(Serialize, Deserialize)]
pub struct ToolSearchOutput {
pub call_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
pub execution: ToolSearchExecutionType,
pub id: String,
pub status: FunctionCallOutputStatusEnum,
pub tools: Vec<Tool>,
}
#[derive(Serialize, Deserialize)]
pub struct CompactionBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
pub encrypted_content: String,
pub id: String,
}
#[derive(Serialize, Deserialize)]
pub struct ImageGenToolCall {
#[serde(skip_serializing_if = "Option::is_none")]
pub action: Option<ImageGenToolCallAction>,
#[serde(skip_serializing_if = "Option::is_none")]
pub background: Option<ImageGenToolCallBackground>,
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quality: Option<ImageGenToolCallQuality>,
pub result: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub revised_prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<String>,
pub status: ImageGenToolCallStatus,
pub r#type: ImageGenToolCallType,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolCallAction {
#[serde(rename = "generate")]
Generate,
#[serde(rename = "edit")]
Edit,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolCallBackground {
#[serde(rename = "transparent")]
Transparent,
#[serde(rename = "opaque")]
Opaque,
#[serde(rename = "auto")]
Auto,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolCallQuality {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
#[serde(rename = "auto")]
Auto,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "generating")]
Generating,
#[serde(rename = "failed")]
Failed,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolCallType {
#[serde(rename = "image_generation_call")]
ImageGenerationCall,
}
#[derive(Serialize, Deserialize)]
pub struct CodeInterpreterToolCall {
pub code: Option<String>,
pub container_id: String,
pub id: String,
pub outputs: Option<Vec<CodeInterpreterToolCallOutputsItem>>,
pub status: CodeInterpreterToolCallStatus,
pub r#type: CodeInterpreterToolCallType,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CodeInterpreterToolCallOutputsItem {
#[serde(rename = "logs")]
Logs(CodeInterpreterOutputLogs),
#[serde(rename = "image")]
Image(CodeInterpreterOutputImage),
}
#[derive(Serialize, Deserialize)]
pub enum CodeInterpreterToolCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
#[serde(rename = "interpreting")]
Interpreting,
#[serde(rename = "failed")]
Failed,
}
#[derive(Serialize, Deserialize)]
pub enum CodeInterpreterToolCallType {
#[serde(rename = "code_interpreter_call")]
CodeInterpreterCall,
}
#[derive(Serialize, Deserialize)]
pub struct LocalShellToolCall {
pub action: LocalShellExecAction,
pub call_id: String,
pub id: String,
pub status: LocalShellToolCallStatus,
pub r#type: LocalShellToolCallType,
}
#[derive(Serialize, Deserialize)]
pub enum LocalShellToolCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub enum LocalShellToolCallType {
#[serde(rename = "local_shell_call")]
LocalShellCall,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCall {
pub action: FunctionShellAction,
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
pub environment: Option<FunctionShellCallEnvironment>,
pub id: String,
pub status: LocalShellCallStatus,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum FunctionShellCallEnvironment {
#[serde(rename = "local")]
Local(LocalEnvironmentResource),
#[serde(rename = "container_reference")]
ContainerReference(ContainerReferenceResource),
}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCallOutput {
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
pub id: String,
pub max_output_length: Option<i64>,
pub output: Vec<FunctionShellCallOutputContent>,
pub status: LocalShellCallOutputStatusEnum,
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchToolCall {
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
pub id: String,
pub operation: ApplyPatchToolCallOperation,
pub status: ApplyPatchCallStatus,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ApplyPatchToolCallOperation {
#[serde(rename = "create_file")]
CreateFile(ApplyPatchCreateFileOperation),
#[serde(rename = "delete_file")]
DeleteFile(ApplyPatchDeleteFileOperation),
#[serde(rename = "update_file")]
UpdateFile(ApplyPatchUpdateFileOperation),
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchToolCallOutput {
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub output: Option<String>,
pub status: ApplyPatchCallOutputStatus,
}
#[derive(Serialize, Deserialize)]
pub struct MCPToolCall {
#[serde(skip_serializing_if = "Option::is_none")]
pub approval_request_id: Option<String>,
pub arguments: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
pub id: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub output: Option<String>,
pub server_label: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<MCPToolCallStatus>,
pub r#type: MCPToolCallType,
}
#[derive(Serialize, Deserialize)]
pub enum MCPToolCallType {
#[serde(rename = "mcp_call")]
McpCall,
}
#[derive(Serialize, Deserialize)]
pub struct MCPListTools {
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
pub id: String,
pub server_label: String,
pub tools: Vec<MCPListToolsTool>,
pub r#type: MCPListToolsType,
}
#[derive(Serialize, Deserialize)]
pub enum MCPListToolsType {
#[serde(rename = "mcp_list_tools")]
McpListTools,
}
#[derive(Serialize, Deserialize)]
pub struct MCPApprovalRequest {
pub arguments: String,
pub id: String,
pub name: String,
pub server_label: String,
pub r#type: MCPApprovalRequestType,
}
#[derive(Serialize, Deserialize)]
pub enum MCPApprovalRequestType {
#[serde(rename = "mcp_approval_request")]
McpApprovalRequest,
}
#[derive(Serialize, Deserialize)]
pub struct CustomToolCall {
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub input: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
pub r#type: CustomToolCallType,
}
#[derive(Serialize, Deserialize)]
pub enum CustomToolCallType {
#[serde(rename = "custom_tool_call")]
CustomToolCall,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum OutputContent {
#[serde(rename = "output_text")]
OutputText(OutputTextContent),
#[serde(rename = "refusal")]
Refusal(RefusalContent),
#[serde(rename = "reasoning_text")]
ReasoningText(ReasoningTextContent),
}
#[derive(Serialize, Deserialize)]
pub struct ResponseLogProb {
pub logprob: f64,
pub token: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_logprobs: Option<Vec<ResponseLogProbTopLogprobsItem>>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseLogProbTopLogprobsItem {
#[serde(skip_serializing_if = "Option::is_none")]
pub logprob: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token: Option<String>,
}
pub type ResponsePromptVariablesValueValueString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ResponsePromptVariablesValueValue {
ResponsePromptVariablesValueValueString(ResponsePromptVariablesValueValueString),
InputTextContent(InputTextContent),
InputImageContent(InputImageContent),
InputFileContent(InputFileContent),
}
pub type ResponsePromptVariables =
Option<Option<HashMap<String, ResponsePromptVariablesValueValue>>>;
#[derive(Serialize, Deserialize)]
pub enum ReasoningEffortValue {
#[serde(rename = "none")]
None,
#[serde(rename = "minimal")]
Minimal,
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
#[serde(rename = "xhigh")]
Xhigh,
}
pub type ReasoningEffort = Option<Option<ReasoningEffortValue>>;
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum TextResponseFormatConfiguration {
#[serde(rename = "text")]
Text(ResponseFormatText),
#[serde(rename = "json_schema")]
JsonSchema(TextResponseFormatJsonSchema),
#[serde(rename = "json_object")]
JsonObject(ResponseFormatJsonObject),
}
#[derive(Serialize, Deserialize)]
pub enum VerbosityValue {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
}
pub type Verbosity = Option<Option<VerbosityValue>>;
#[derive(Serialize, Deserialize)]
pub enum ToolChoiceOptions {
#[serde(rename = "none")]
None,
#[serde(rename = "auto")]
Auto,
#[serde(rename = "required")]
Required,
}
#[derive(Serialize, Deserialize)]
pub struct ToolChoiceAllowed {
pub mode: ToolChoiceAllowedMode,
pub tools: Vec<Value>,
pub r#type: ToolChoiceAllowedType,
}
#[derive(Serialize, Deserialize)]
pub enum ToolChoiceAllowedMode {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "required")]
Required,
}
#[derive(Serialize, Deserialize)]
pub enum ToolChoiceAllowedType {
#[serde(rename = "allowed_tools")]
AllowedTools,
}
#[derive(Serialize, Deserialize)]
pub struct ToolChoiceTypes {
pub r#type: ToolChoiceTypesType,
}
#[derive(Serialize, Deserialize)]
pub enum ToolChoiceTypesType {
#[serde(rename = "file_search")]
FileSearch,
#[serde(rename = "web_search_preview")]
WebSearchPreview,
#[serde(rename = "computer")]
Computer,
#[serde(rename = "computer_use_preview")]
ComputerUsePreview,
#[serde(rename = "computer_use")]
ComputerUse,
#[serde(rename = "web_search_preview_2025_03_11")]
WebSearchPreview20250311,
#[serde(rename = "image_generation")]
ImageGeneration,
#[serde(rename = "code_interpreter")]
CodeInterpreter,
}
#[derive(Serialize, Deserialize)]
pub struct ToolChoiceFunction {
pub name: String,
pub r#type: ToolChoiceFunctionType,
}
#[derive(Serialize, Deserialize)]
pub enum ToolChoiceFunctionType {
#[serde(rename = "function")]
Function,
}
#[derive(Serialize, Deserialize)]
pub struct ToolChoiceMCP {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
pub server_label: String,
pub r#type: ToolChoiceMCPType,
}
#[derive(Serialize, Deserialize)]
pub enum ToolChoiceMCPType {
#[serde(rename = "mcp")]
Mcp,
}
#[derive(Serialize, Deserialize)]
pub struct ToolChoiceCustom {
pub name: String,
pub r#type: ToolChoiceCustomType,
}
#[derive(Serialize, Deserialize)]
pub enum ToolChoiceCustomType {
#[serde(rename = "custom")]
Custom,
}
#[derive(Serialize, Deserialize)]
pub struct SpecificApplyPatchParam {
pub r#type: SpecificApplyPatchParamType,
}
#[derive(Serialize, Deserialize)]
pub enum SpecificApplyPatchParamType {
#[serde(rename = "apply_patch")]
ApplyPatch,
}
#[derive(Serialize, Deserialize)]
pub struct SpecificFunctionShellParam {
pub r#type: SpecificFunctionShellParamType,
}
#[derive(Serialize, Deserialize)]
pub enum SpecificFunctionShellParamType {
#[serde(rename = "shell")]
Shell,
}
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum Tool {
FunctionTool(FunctionTool),
FileSearchTool(FileSearchTool),
ComputerTool(ComputerTool),
ComputerUsePreviewTool(ComputerUsePreviewTool),
WebSearchTool(WebSearchTool),
MCPTool(MCPTool),
CodeInterpreterTool(CodeInterpreterTool),
ImageGenTool(ImageGenTool),
LocalShellToolParam(LocalShellToolParam),
FunctionShellToolParam(FunctionShellToolParam),
CustomToolParam(CustomToolParam),
NamespaceToolParam(NamespaceToolParam),
ToolSearchToolParam(ToolSearchToolParam),
WebSearchPreviewTool(WebSearchPreviewTool),
ApplyPatchToolParam(ApplyPatchToolParam),
}
pub type InputMessageContentList = Option<Vec<InputContent>>;
#[derive(Serialize, Deserialize)]
pub enum MessagePhase {
#[serde(rename = "commentary")]
Commentary,
#[serde(rename = "final_answer")]
FinalAnswer,
}
#[derive(Serialize, Deserialize)]
pub struct InputMessage {
pub content: InputMessageContentList,
pub role: InputMessageRole,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<InputMessageStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<InputMessageType>,
}
#[derive(Serialize, Deserialize)]
pub enum InputMessageRole {
#[serde(rename = "user")]
User,
#[serde(rename = "system")]
System,
#[serde(rename = "developer")]
Developer,
}
#[derive(Serialize, Deserialize)]
pub enum InputMessageStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub enum InputMessageType {
#[serde(rename = "message")]
Message,
}
#[derive(Serialize, Deserialize)]
pub struct ComputerCallOutputItemParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub acknowledged_safety_checks: Option<Vec<ComputerCallSafetyCheckParam>>,
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub output: ComputerScreenshotImage,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<FunctionCallItemStatus>,
pub r#type: ComputerCallOutputItemParamType,
}
#[derive(Serialize, Deserialize)]
pub enum ComputerCallOutputItemParamType {
#[serde(rename = "computer_call_output")]
ComputerCallOutput,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionCallOutputItemParam {
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub output: FunctionCallOutputItemParamOutput,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<FunctionCallItemStatus>,
pub r#type: FunctionCallOutputItemParamType,
}
pub type FunctionCallOutputItemParamOutputString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum FunctionCallOutputItemParamOutputArrayItem {
#[serde(rename = "input_text")]
InputText(InputTextContentParam),
#[serde(rename = "input_image")]
InputImage(InputImageContentParamAutoParam),
#[serde(rename = "input_file")]
InputFile(InputFileContentParam),
}
pub type FunctionCallOutputItemParamOutputArray =
Option<Vec<FunctionCallOutputItemParamOutputArrayItem>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum FunctionCallOutputItemParamOutput {
FunctionCallOutputItemParamOutputString(FunctionCallOutputItemParamOutputString),
FunctionCallOutputItemParamOutputArray(FunctionCallOutputItemParamOutputArray),
}
#[derive(Serialize, Deserialize)]
pub enum FunctionCallOutputItemParamType {
#[serde(rename = "function_call_output")]
FunctionCallOutput,
}
#[derive(Serialize, Deserialize)]
pub struct ToolSearchCallItemParam {
pub arguments: EmptyModelParam,
#[serde(skip_serializing_if = "Option::is_none")]
pub call_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub execution: Option<ToolSearchExecutionType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<FunctionCallItemStatus>,
pub r#type: ToolSearchCallItemParamType,
}
#[derive(Serialize, Deserialize)]
pub enum ToolSearchCallItemParamType {
#[serde(rename = "tool_search_call")]
ToolSearchCall,
}
#[derive(Serialize, Deserialize)]
pub struct ToolSearchOutputItemParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub call_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub execution: Option<ToolSearchExecutionType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<FunctionCallItemStatus>,
pub tools: Vec<Tool>,
pub r#type: ToolSearchOutputItemParamType,
}
#[derive(Serialize, Deserialize)]
pub enum ToolSearchOutputItemParamType {
#[serde(rename = "tool_search_output")]
ToolSearchOutput,
}
#[derive(Serialize, Deserialize)]
pub struct CompactionSummaryItemParam {
pub encrypted_content: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub r#type: CompactionSummaryItemParamType,
}
#[derive(Serialize, Deserialize)]
pub enum CompactionSummaryItemParamType {
#[serde(rename = "compaction")]
Compaction,
}
#[derive(Serialize, Deserialize)]
pub struct LocalShellToolCallOutput {
pub id: String,
pub output: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<LocalShellToolCallOutputStatus>,
pub r#type: LocalShellToolCallOutputType,
}
#[derive(Serialize, Deserialize)]
pub enum LocalShellToolCallOutputStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub enum LocalShellToolCallOutputType {
#[serde(rename = "local_shell_call_output")]
LocalShellCallOutput,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCallItemParam {
pub action: FunctionShellActionParam,
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub environment: Option<FunctionShellCallItemParamEnvironment>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<FunctionShellCallItemStatus>,
pub r#type: FunctionShellCallItemParamType,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum FunctionShellCallItemParamEnvironment {
#[serde(rename = "local")]
Local(LocalEnvironmentParam),
#[serde(rename = "container_reference")]
ContainerReference(ContainerReferenceParam),
}
#[derive(Serialize, Deserialize)]
pub enum FunctionShellCallItemParamType {
#[serde(rename = "shell_call")]
ShellCall,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCallOutputItemParam {
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_output_length: Option<i64>,
pub output: Vec<FunctionShellCallOutputContentParam>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<FunctionShellCallItemStatus>,
pub r#type: FunctionShellCallOutputItemParamType,
}
#[derive(Serialize, Deserialize)]
pub enum FunctionShellCallOutputItemParamType {
#[serde(rename = "shell_call_output")]
ShellCallOutput,
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchToolCallItemParam {
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub operation: ApplyPatchOperationParam,
pub status: ApplyPatchCallStatusParam,
pub r#type: ApplyPatchToolCallItemParamType,
}
#[derive(Serialize, Deserialize)]
pub enum ApplyPatchToolCallItemParamType {
#[serde(rename = "apply_patch_call")]
ApplyPatchCall,
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchToolCallOutputItemParam {
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output: Option<String>,
pub status: ApplyPatchCallOutputStatusParam,
pub r#type: ApplyPatchToolCallOutputItemParamType,
}
#[derive(Serialize, Deserialize)]
pub enum ApplyPatchToolCallOutputItemParamType {
#[serde(rename = "apply_patch_call_output")]
ApplyPatchCallOutput,
}
#[derive(Serialize, Deserialize)]
pub struct MCPApprovalResponse {
pub approval_request_id: String,
pub approve: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
pub r#type: MCPApprovalResponseType,
}
#[derive(Serialize, Deserialize)]
pub enum MCPApprovalResponseType {
#[serde(rename = "mcp_approval_response")]
McpApprovalResponse,
}
#[derive(Serialize, Deserialize)]
pub struct CustomToolCallOutput {
pub call_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub output: CustomToolCallOutputOutput,
pub r#type: CustomToolCallOutputType,
}
pub type CustomToolCallOutputOutputString = Option<String>;
pub type CustomToolCallOutputOutputArray = Option<Vec<FunctionAndCustomToolCallOutput>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum CustomToolCallOutputOutput {
CustomToolCallOutputOutputString(CustomToolCallOutputOutputString),
CustomToolCallOutputOutputArray(CustomToolCallOutputOutputArray),
}
#[derive(Serialize, Deserialize)]
pub enum CustomToolCallOutputType {
#[serde(rename = "custom_tool_call_output")]
CustomToolCallOutput,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum OutputMessageContent {
#[serde(rename = "output_text")]
OutputText(OutputTextContent),
#[serde(rename = "refusal")]
Refusal(RefusalContent),
}
pub type VectorStoreFileAttributesValueValueString = Option<String>;
pub type VectorStoreFileAttributesValueValueNumber = Option<f64>;
pub type VectorStoreFileAttributesValueValueBoolean = Option<bool>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum VectorStoreFileAttributesValueValue {
VectorStoreFileAttributesValueValueString(VectorStoreFileAttributesValueValueString),
VectorStoreFileAttributesValueValueNumber(VectorStoreFileAttributesValueValueNumber),
VectorStoreFileAttributesValueValueBoolean(VectorStoreFileAttributesValueValueBoolean),
}
pub type VectorStoreFileAttributes =
Option<Option<HashMap<String, VectorStoreFileAttributesValueValue>>>;
#[derive(Serialize, Deserialize)]
pub struct WebSearchActionSearch {
#[serde(skip_serializing_if = "Option::is_none")]
pub queries: Option<Vec<String>>,
pub query: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub sources: Option<Vec<WebSearchActionSearchSourcesItem>>,
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchActionSearchSourcesItem {
pub r#type: WebSearchActionSearchSourcesItemType,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub enum WebSearchActionSearchSourcesItemType {
#[serde(rename = "url")]
Url,
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchActionOpenPage {
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchActionFind {
pub pattern: String,
pub url: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ComputerAction {
#[serde(rename = "click")]
Click(ClickParam),
#[serde(rename = "double_click")]
DoubleClick(DoubleClickAction),
#[serde(rename = "drag")]
Drag(DragParam),
#[serde(rename = "keypress")]
Keypress(KeyPressAction),
#[serde(rename = "move")]
Move(MoveParam),
#[serde(rename = "screenshot")]
Screenshot(ScreenshotParam),
#[serde(rename = "scroll")]
Scroll(ScrollParam),
#[serde(rename = "type")]
Type(TypeParam),
#[serde(rename = "wait")]
Wait(WaitParam),
}
pub type ComputerActionList = Option<Vec<ComputerAction>>;
#[derive(Serialize, Deserialize)]
pub struct ComputerCallSafetyCheckParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct ReasoningTextContent {
pub text: String,
pub r#type: ReasoningTextContentType,
}
#[derive(Serialize, Deserialize)]
pub enum ReasoningTextContentType {
#[serde(rename = "reasoning_text")]
ReasoningText,
}
#[derive(Serialize, Deserialize)]
pub struct SummaryTextContent {
pub text: String,
pub r#type: SummaryTextContentType,
}
#[derive(Serialize, Deserialize)]
pub enum SummaryTextContentType {
#[serde(rename = "summary_text")]
SummaryText,
}
#[derive(Serialize, Deserialize)]
pub enum ToolSearchExecutionType {
#[serde(rename = "server")]
Server,
#[serde(rename = "client")]
Client,
}
#[derive(Serialize, Deserialize)]
pub enum FunctionCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub enum FunctionCallOutputStatusEnum {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub struct CodeInterpreterOutputLogs {
pub logs: String,
}
#[derive(Serialize, Deserialize)]
pub struct CodeInterpreterOutputImage {
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct LocalShellExecAction {
pub command: Vec<String>,
pub env: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout_ms: Option<i64>,
pub r#type: LocalShellExecActionType,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub working_directory: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub enum LocalShellExecActionType {
#[serde(rename = "exec")]
Exec,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellAction {
pub commands: Vec<String>,
pub max_output_length: Option<i64>,
pub timeout_ms: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub struct LocalEnvironmentResource {}
#[derive(Serialize, Deserialize)]
pub struct ContainerReferenceResource {
pub container_id: String,
}
#[derive(Serialize, Deserialize)]
pub enum LocalShellCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCallOutputContent {
#[serde(skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
pub outcome: FunctionShellCallOutputContentOutcome,
pub stderr: String,
pub stdout: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum FunctionShellCallOutputContentOutcome {
#[serde(rename = "timeout")]
Timeout(FunctionShellCallOutputTimeoutOutcome),
#[serde(rename = "exit")]
Exit(FunctionShellCallOutputExitOutcome),
}
#[derive(Serialize, Deserialize)]
pub enum LocalShellCallOutputStatusEnum {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchCreateFileOperation {
pub diff: String,
pub path: String,
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchDeleteFileOperation {
pub path: String,
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchUpdateFileOperation {
pub diff: String,
pub path: String,
}
#[derive(Serialize, Deserialize)]
pub enum ApplyPatchCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
}
#[derive(Serialize, Deserialize)]
pub enum ApplyPatchCallOutputStatus {
#[serde(rename = "completed")]
Completed,
#[serde(rename = "failed")]
Failed,
}
#[derive(Serialize, Deserialize)]
pub enum MCPToolCallStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
#[serde(rename = "calling")]
Calling,
#[serde(rename = "failed")]
Failed,
}
#[derive(Serialize, Deserialize)]
pub struct MCPListToolsTool {
#[serde(skip_serializing_if = "Option::is_none")]
pub annotations: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub input_schema: Value,
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub struct OutputTextContent {
pub annotations: Vec<Annotation>,
pub logprobs: Vec<LogProb>,
pub text: String,
}
#[derive(Serialize, Deserialize)]
pub struct RefusalContent {
pub refusal: String,
}
#[derive(Serialize, Deserialize)]
pub struct InputTextContent {
pub text: String,
pub r#type: InputTextContentType,
}
#[derive(Serialize, Deserialize)]
pub enum InputTextContentType {
#[serde(rename = "input_text")]
InputText,
}
#[derive(Serialize, Deserialize)]
pub struct InputImageContent {
pub detail: ImageDetail,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image_url: Option<String>,
pub r#type: InputImageContentType,
}
#[derive(Serialize, Deserialize)]
pub enum InputImageContentType {
#[serde(rename = "input_image")]
InputImage,
}
#[derive(Serialize, Deserialize)]
pub struct InputFileContent {
#[serde(skip_serializing_if = "Option::is_none")]
pub file_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filename: Option<String>,
pub r#type: InputFileContentType,
}
#[derive(Serialize, Deserialize)]
pub enum InputFileContentType {
#[serde(rename = "input_file")]
InputFile,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFormatText {}
#[derive(Serialize, Deserialize)]
pub struct TextResponseFormatJsonSchema {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub name: String,
pub schema: ResponseFormatJsonSchemaSchema,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseFormatJsonObject {}
#[derive(Serialize, Deserialize)]
pub struct FunctionTool {
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub name: String,
pub parameters: Option<HashMap<String, Value>>,
pub strict: Option<bool>,
pub r#type: FunctionToolType,
}
#[derive(Serialize, Deserialize)]
pub enum FunctionToolType {
#[serde(rename = "function")]
Function,
}
#[derive(Serialize, Deserialize)]
pub struct FileSearchTool {
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<Filters>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_num_results: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ranking_options: Option<RankingOptions>,
pub r#type: FileSearchToolType,
pub vector_store_ids: Vec<String>,
}
#[derive(Serialize, Deserialize)]
pub enum FileSearchToolType {
#[serde(rename = "file_search")]
FileSearch,
}
#[derive(Serialize, Deserialize)]
pub struct ComputerTool {
pub r#type: ComputerToolType,
}
#[derive(Serialize, Deserialize)]
pub enum ComputerToolType {
#[serde(rename = "computer")]
Computer,
}
#[derive(Serialize, Deserialize)]
pub struct ComputerUsePreviewTool {
pub display_height: i64,
pub display_width: i64,
pub environment: ComputerEnvironment,
pub r#type: ComputerUsePreviewToolType,
}
#[derive(Serialize, Deserialize)]
pub enum ComputerUsePreviewToolType {
#[serde(rename = "computer_use_preview")]
ComputerUsePreview,
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchTool {
#[serde(skip_serializing_if = "Option::is_none")]
pub filters: Option<WebSearchToolFilters>,
#[serde(skip_serializing_if = "Option::is_none")]
pub search_context_size: Option<WebSearchToolSearchContextSize>,
pub r#type: WebSearchToolType,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_location: Option<WebSearchApproximateLocation>,
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchToolFilters {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_domains: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize)]
pub enum WebSearchToolSearchContextSize {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
}
#[derive(Serialize, Deserialize)]
pub enum WebSearchToolType {
#[serde(rename = "web_search")]
WebSearch,
#[serde(rename = "web_search_2025_08_26")]
WebSearch20250826,
}
#[derive(Serialize, Deserialize)]
pub struct MCPTool {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_tools: Option<MCPToolAllowedTools>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authorization: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub connector_id: Option<MCPToolConnectorId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub headers: Option<HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub require_approval: Option<MCPToolRequireApproval>,
#[serde(skip_serializing_if = "Option::is_none")]
pub server_description: Option<String>,
pub server_label: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub server_url: Option<String>,
pub r#type: MCPToolType,
}
pub type MCPToolAllowedToolsArray = Option<Vec<String>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum MCPToolAllowedTools {
MCPToolAllowedToolsArray(MCPToolAllowedToolsArray),
MCPToolFilter(MCPToolFilter),
}
#[derive(Serialize, Deserialize)]
pub enum MCPToolConnectorId {
#[serde(rename = "connector_dropbox")]
ConnectorDropbox,
#[serde(rename = "connector_gmail")]
ConnectorGmail,
#[serde(rename = "connector_googlecalendar")]
ConnectorGooglecalendar,
#[serde(rename = "connector_googledrive")]
ConnectorGoogledrive,
#[serde(rename = "connector_microsoftteams")]
ConnectorMicrosoftteams,
#[serde(rename = "connector_outlookcalendar")]
ConnectorOutlookcalendar,
#[serde(rename = "connector_outlookemail")]
ConnectorOutlookemail,
#[serde(rename = "connector_sharepoint")]
ConnectorSharepoint,
}
#[derive(Serialize, Deserialize)]
pub struct MCPToolRequireApprovalVariant1 {
#[serde(skip_serializing_if = "Option::is_none")]
pub always: Option<MCPToolFilter>,
#[serde(skip_serializing_if = "Option::is_none")]
pub never: Option<MCPToolFilter>,
}
pub type MCPToolRequireApprovalString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum MCPToolRequireApproval {
MCPToolRequireApprovalVariant1(MCPToolRequireApprovalVariant1),
MCPToolRequireApprovalString(MCPToolRequireApprovalString),
}
#[derive(Serialize, Deserialize)]
pub enum MCPToolType {
#[serde(rename = "mcp")]
Mcp,
}
#[derive(Serialize, Deserialize)]
pub struct CodeInterpreterTool {
pub container: CodeInterpreterToolContainer,
pub r#type: CodeInterpreterToolType,
}
pub type CodeInterpreterToolContainerString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum CodeInterpreterToolContainer {
CodeInterpreterToolContainerString(CodeInterpreterToolContainerString),
AutoCodeInterpreterToolParam(AutoCodeInterpreterToolParam),
}
#[derive(Serialize, Deserialize)]
pub enum CodeInterpreterToolType {
#[serde(rename = "code_interpreter")]
CodeInterpreter,
}
#[derive(Serialize, Deserialize)]
pub struct ImageGenTool {
#[serde(skip_serializing_if = "Option::is_none")]
pub action: Option<ImageGenActionEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
pub background: Option<ImageGenToolBackground>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_fidelity: Option<InputFidelity>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_image_mask: Option<ImageGenToolInputImageMask>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub moderation: Option<ImageGenToolModeration>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_compression: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_format: Option<ImageGenToolOutputFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub partial_images: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quality: Option<ImageGenToolQuality>,
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<ImageGenToolSize>,
pub r#type: ImageGenToolType,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolBackground {
#[serde(rename = "transparent")]
Transparent,
#[serde(rename = "opaque")]
Opaque,
#[serde(rename = "auto")]
Auto,
}
#[derive(Serialize, Deserialize)]
pub struct ImageGenToolInputImageMask {
#[serde(skip_serializing_if = "Option::is_none")]
pub file_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image_url: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolModeration {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "low")]
Low,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolOutputFormat {
#[serde(rename = "png")]
Png,
#[serde(rename = "webp")]
Webp,
#[serde(rename = "jpeg")]
Jpeg,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolQuality {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
#[serde(rename = "auto")]
Auto,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolSize {
#[serde(rename = "1024x1024")]
N1024X1024,
#[serde(rename = "1024x1536")]
N1024X1536,
#[serde(rename = "1536x1024")]
N1536X1024,
#[serde(rename = "auto")]
Auto,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenToolType {
#[serde(rename = "image_generation")]
ImageGeneration,
}
#[derive(Serialize, Deserialize)]
pub struct LocalShellToolParam {
pub r#type: LocalShellToolParamType,
}
#[derive(Serialize, Deserialize)]
pub enum LocalShellToolParamType {
#[serde(rename = "local_shell")]
LocalShell,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellToolParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub environment: Option<FunctionShellToolParamEnvironment>,
pub r#type: FunctionShellToolParamType,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum FunctionShellToolParamEnvironment {
#[serde(rename = "container_auto")]
ContainerAuto(ContainerAutoParam),
#[serde(rename = "local")]
Local(LocalEnvironmentParam),
#[serde(rename = "container_reference")]
ContainerReference(ContainerReferenceParam),
}
#[derive(Serialize, Deserialize)]
pub enum FunctionShellToolParamType {
#[serde(rename = "shell")]
Shell,
}
#[derive(Serialize, Deserialize)]
pub struct CustomToolParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<CustomToolParamFormat>,
pub name: String,
pub r#type: CustomToolParamType,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CustomToolParamFormat {
#[serde(rename = "text")]
Text(CustomTextFormatParam),
#[serde(rename = "grammar")]
Grammar(CustomGrammarFormatParam),
}
#[derive(Serialize, Deserialize)]
pub enum CustomToolParamType {
#[serde(rename = "custom")]
Custom,
}
#[derive(Serialize, Deserialize)]
pub struct NamespaceToolParam {
pub description: String,
pub name: String,
pub tools: Vec<NamespaceToolParamToolsItem>,
pub r#type: NamespaceToolParamType,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum NamespaceToolParamToolsItem {
#[serde(rename = "function")]
Function(FunctionToolParam),
#[serde(rename = "custom")]
Custom(CustomToolParam),
}
#[derive(Serialize, Deserialize)]
pub enum NamespaceToolParamType {
#[serde(rename = "namespace")]
Namespace,
}
#[derive(Serialize, Deserialize)]
pub struct ToolSearchToolParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub execution: Option<ToolSearchExecutionType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parameters: Option<EmptyModelParam>,
pub r#type: ToolSearchToolParamType,
}
#[derive(Serialize, Deserialize)]
pub enum ToolSearchToolParamType {
#[serde(rename = "tool_search")]
ToolSearch,
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchPreviewTool {
#[serde(skip_serializing_if = "Option::is_none")]
pub search_content_types: Option<Vec<SearchContentType>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub search_context_size: Option<SearchContextSize>,
pub r#type: WebSearchPreviewToolType,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_location: Option<ApproximateLocation>,
}
#[derive(Serialize, Deserialize)]
pub enum WebSearchPreviewToolType {
#[serde(rename = "web_search_preview")]
WebSearchPreview,
#[serde(rename = "web_search_preview_2025_03_11")]
WebSearchPreview20250311,
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchToolParam {
pub r#type: ApplyPatchToolParamType,
}
#[derive(Serialize, Deserialize)]
pub enum ApplyPatchToolParamType {
#[serde(rename = "apply_patch")]
ApplyPatch,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum InputContent {
#[serde(rename = "input_text")]
InputText(InputTextContent),
#[serde(rename = "input_image")]
InputImage(InputImageContent),
#[serde(rename = "input_file")]
InputFile(InputFileContent),
}
#[derive(Serialize, Deserialize)]
pub struct ComputerScreenshotImage {
#[serde(skip_serializing_if = "Option::is_none")]
pub file_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image_url: Option<String>,
pub r#type: ComputerScreenshotImageType,
}
#[derive(Serialize, Deserialize)]
pub enum ComputerScreenshotImageType {
#[serde(rename = "computer_screenshot")]
ComputerScreenshot,
}
#[derive(Serialize, Deserialize)]
pub enum FunctionCallItemStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub struct InputTextContentParam {
pub text: String,
}
#[derive(Serialize, Deserialize)]
pub struct InputImageContentParamAutoParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<DetailEnum>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub image_url: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct InputFileContentParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub file_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filename: Option<String>,
}
pub type EmptyModelParam = Option<Value>;
#[derive(Serialize, Deserialize)]
pub struct FunctionShellActionParam {
pub commands: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_output_length: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout_ms: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub struct LocalEnvironmentParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub skills: Option<Vec<LocalSkillParam>>,
}
#[derive(Serialize, Deserialize)]
pub struct ContainerReferenceParam {
pub container_id: String,
}
#[derive(Serialize, Deserialize)]
pub enum FunctionShellCallItemStatus {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "incomplete")]
Incomplete,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCallOutputContentParam {
pub outcome: FunctionShellCallOutputOutcomeParam,
pub stderr: String,
pub stdout: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ApplyPatchOperationParam {
#[serde(rename = "create_file")]
CreateFile(ApplyPatchCreateFileOperationParam),
#[serde(rename = "delete_file")]
DeleteFile(ApplyPatchDeleteFileOperationParam),
#[serde(rename = "update_file")]
UpdateFile(ApplyPatchUpdateFileOperationParam),
}
#[derive(Serialize, Deserialize)]
pub enum ApplyPatchCallStatusParam {
#[serde(rename = "in_progress")]
InProgress,
#[serde(rename = "completed")]
Completed,
}
#[derive(Serialize, Deserialize)]
pub enum ApplyPatchCallOutputStatusParam {
#[serde(rename = "completed")]
Completed,
#[serde(rename = "failed")]
Failed,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum FunctionAndCustomToolCallOutput {
#[serde(rename = "input_text")]
InputText(InputTextContent),
#[serde(rename = "input_image")]
InputImage(InputImageContent),
#[serde(rename = "input_file")]
InputFile(InputFileContent),
}
#[derive(Serialize, Deserialize)]
pub struct ClickParam {
pub button: ClickButtonType,
#[serde(skip_serializing_if = "Option::is_none")]
pub keys: Option<Vec<String>>,
pub x: i64,
pub y: i64,
}
#[derive(Serialize, Deserialize)]
pub struct DoubleClickAction {
pub keys: Option<Vec<String>>,
pub x: i64,
pub y: i64,
}
#[derive(Serialize, Deserialize)]
pub struct DragParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub keys: Option<Vec<String>>,
pub path: Vec<CoordParam>,
}
#[derive(Serialize, Deserialize)]
pub struct KeyPressAction {
pub keys: Vec<String>,
}
#[derive(Serialize, Deserialize)]
pub struct MoveParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub keys: Option<Vec<String>>,
pub x: i64,
pub y: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ScreenshotParam {}
#[derive(Serialize, Deserialize)]
pub struct ScrollParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub keys: Option<Vec<String>>,
pub scroll_x: i64,
pub scroll_y: i64,
pub x: i64,
pub y: i64,
}
#[derive(Serialize, Deserialize)]
pub struct TypeParam {
pub text: String,
}
#[derive(Serialize, Deserialize)]
pub struct WaitParam {}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCallOutputTimeoutOutcome {}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCallOutputExitOutcome {
pub exit_code: i64,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Annotation {
#[serde(rename = "file_citation")]
FileCitation(FileCitationBody),
#[serde(rename = "url_citation")]
UrlCitation(UrlCitationBody),
#[serde(rename = "container_file_citation")]
ContainerFileCitation(ContainerFileCitationBody),
#[serde(rename = "file_path")]
FilePath(FilePath),
}
#[derive(Serialize, Deserialize)]
pub struct LogProb {
pub bytes: Vec<i64>,
pub logprob: f64,
pub token: String,
pub top_logprobs: Vec<TopLogProb>,
}
#[derive(Serialize, Deserialize)]
pub enum ImageDetail {
#[serde(rename = "low")]
Low,
#[serde(rename = "high")]
High,
#[serde(rename = "auto")]
Auto,
#[serde(rename = "original")]
Original,
}
pub type ResponseFormatJsonSchemaSchema = Option<Value>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum Filters {
ComparisonFilter(ComparisonFilter),
CompoundFilter(CompoundFilter),
}
#[derive(Serialize, Deserialize)]
pub struct RankingOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub hybrid_search: Option<HybridSearchOptions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ranker: Option<RankerVersionType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub score_threshold: Option<f64>,
}
#[derive(Serialize, Deserialize)]
pub enum ComputerEnvironment {
#[serde(rename = "windows")]
Windows,
#[serde(rename = "mac")]
Mac,
#[serde(rename = "linux")]
Linux,
#[serde(rename = "ubuntu")]
Ubuntu,
#[serde(rename = "browser")]
Browser,
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchApproximateLocationValue {
#[serde(skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<WebSearchApproximateLocationValueType>,
}
#[derive(Serialize, Deserialize)]
pub enum WebSearchApproximateLocationValueType {
#[serde(rename = "approximate")]
Approximate,
}
pub type WebSearchApproximateLocation = Option<Option<WebSearchApproximateLocationValue>>;
#[derive(Serialize, Deserialize)]
pub struct MCPToolFilter {
#[serde(skip_serializing_if = "Option::is_none")]
pub read_only: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_names: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize)]
pub struct AutoCodeInterpreterToolParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub file_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub memory_limit: Option<ContainerMemoryLimit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network_policy: Option<AutoCodeInterpreterToolParamNetworkPolicy>,
pub r#type: AutoCodeInterpreterToolParamType,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum AutoCodeInterpreterToolParamNetworkPolicy {
#[serde(rename = "disabled")]
Disabled(ContainerNetworkPolicyDisabledParam),
#[serde(rename = "allowlist")]
Allowlist(ContainerNetworkPolicyAllowlistParam),
}
#[derive(Serialize, Deserialize)]
pub enum AutoCodeInterpreterToolParamType {
#[serde(rename = "auto")]
Auto,
}
#[derive(Serialize, Deserialize)]
pub enum ImageGenActionEnum {
#[serde(rename = "generate")]
Generate,
#[serde(rename = "edit")]
Edit,
#[serde(rename = "auto")]
Auto,
}
#[derive(Serialize, Deserialize)]
pub enum InputFidelity {
#[serde(rename = "high")]
High,
#[serde(rename = "low")]
Low,
}
#[derive(Serialize, Deserialize)]
pub struct ContainerAutoParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub file_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub memory_limit: Option<ContainerMemoryLimit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network_policy: Option<ContainerAutoParamNetworkPolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub skills: Option<Vec<ContainerAutoParamSkillsItem>>,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ContainerAutoParamNetworkPolicy {
#[serde(rename = "disabled")]
Disabled(ContainerNetworkPolicyDisabledParam),
#[serde(rename = "allowlist")]
Allowlist(ContainerNetworkPolicyAllowlistParam),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ContainerAutoParamSkillsItem {
#[serde(rename = "skill_reference")]
SkillReference(SkillReferenceParam),
#[serde(rename = "inline")]
Inline(InlineSkillParam),
}
#[derive(Serialize, Deserialize)]
pub struct CustomTextFormatParam {}
#[derive(Serialize, Deserialize)]
pub struct CustomGrammarFormatParam {
pub definition: String,
pub syntax: GrammarSyntax1,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionToolParam {
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub parameters: Option<EmptyModelParam>,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
}
#[derive(Serialize, Deserialize)]
pub enum SearchContentType {
#[serde(rename = "text")]
Text,
#[serde(rename = "image")]
Image,
}
#[derive(Serialize, Deserialize)]
pub enum SearchContextSize {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
}
#[derive(Serialize, Deserialize)]
pub struct ApproximateLocation {
#[serde(skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
pub r#type: ApproximateLocationType,
}
#[derive(Serialize, Deserialize)]
pub enum ApproximateLocationType {
#[serde(rename = "approximate")]
Approximate,
}
#[derive(Serialize, Deserialize)]
pub enum DetailEnum {
#[serde(rename = "low")]
Low,
#[serde(rename = "high")]
High,
#[serde(rename = "auto")]
Auto,
#[serde(rename = "original")]
Original,
}
#[derive(Serialize, Deserialize)]
pub struct LocalSkillParam {
pub description: String,
pub name: String,
pub path: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum FunctionShellCallOutputOutcomeParam {
#[serde(rename = "timeout")]
Timeout(FunctionShellCallOutputTimeoutOutcomeParam),
#[serde(rename = "exit")]
Exit(FunctionShellCallOutputExitOutcomeParam),
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchCreateFileOperationParam {
pub diff: String,
pub path: String,
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchDeleteFileOperationParam {
pub path: String,
}
#[derive(Serialize, Deserialize)]
pub struct ApplyPatchUpdateFileOperationParam {
pub diff: String,
pub path: String,
}
#[derive(Serialize, Deserialize)]
pub enum ClickButtonType {
#[serde(rename = "left")]
Left,
#[serde(rename = "right")]
Right,
#[serde(rename = "wheel")]
Wheel,
#[serde(rename = "back")]
Back,
#[serde(rename = "forward")]
Forward,
}
#[derive(Serialize, Deserialize)]
pub struct CoordParam {
pub x: i64,
pub y: i64,
}
#[derive(Serialize, Deserialize)]
pub struct FileCitationBody {
pub file_id: String,
pub filename: String,
pub index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct UrlCitationBody {
pub end_index: i64,
pub start_index: i64,
pub title: String,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct ContainerFileCitationBody {
pub container_id: String,
pub end_index: i64,
pub file_id: String,
pub filename: String,
pub start_index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct FilePath {
pub file_id: String,
pub index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct TopLogProb {
pub bytes: Vec<i64>,
pub logprob: f64,
pub token: String,
}
#[derive(Serialize, Deserialize)]
pub struct ComparisonFilter {
pub key: String,
pub r#type: ComparisonFilterType,
pub value: ComparisonFilterValue,
}
#[derive(Serialize, Deserialize)]
pub enum ComparisonFilterType {
#[serde(rename = "eq")]
Eq,
#[serde(rename = "ne")]
Ne,
#[serde(rename = "gt")]
Gt,
#[serde(rename = "gte")]
Gte,
#[serde(rename = "lt")]
Lt,
#[serde(rename = "lte")]
Lte,
#[serde(rename = "in")]
In,
#[serde(rename = "nin")]
Nin,
}
pub type ComparisonFilterValueString = Option<String>;
pub type ComparisonFilterValueNumber = Option<f64>;
pub type ComparisonFilterValueBoolean = Option<bool>;
pub type ComparisonFilterValueArrayItemString = Option<String>;
pub type ComparisonFilterValueArrayItemNumber = Option<f64>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ComparisonFilterValueArrayItem {
ComparisonFilterValueArrayItemString(ComparisonFilterValueArrayItemString),
ComparisonFilterValueArrayItemNumber(ComparisonFilterValueArrayItemNumber),
}
pub type ComparisonFilterValueArray = Option<Vec<ComparisonFilterValueArrayItem>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ComparisonFilterValue {
ComparisonFilterValueString(ComparisonFilterValueString),
ComparisonFilterValueNumber(ComparisonFilterValueNumber),
ComparisonFilterValueBoolean(ComparisonFilterValueBoolean),
ComparisonFilterValueArray(ComparisonFilterValueArray),
}
#[derive(Serialize, Deserialize)]
pub struct CompoundFilter {
pub filters: Vec<CompoundFilterFiltersItem>,
pub r#type: CompoundFilterType,
}
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum CompoundFilterFiltersItem {
ComparisonFilter(ComparisonFilter),
CompoundFilter(CompoundFilter),
}
#[derive(Serialize, Deserialize)]
pub enum CompoundFilterType {
#[serde(rename = "and")]
And,
#[serde(rename = "or")]
Or,
}
#[derive(Serialize, Deserialize)]
pub struct HybridSearchOptions {
pub embedding_weight: f64,
pub text_weight: f64,
}
#[derive(Serialize, Deserialize)]
pub enum RankerVersionType {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "default-2024-11-15")]
Default20241115,
}
#[derive(Serialize, Deserialize)]
pub enum ContainerMemoryLimit {
#[serde(rename = "1g")]
N1G,
#[serde(rename = "4g")]
N4G,
#[serde(rename = "16g")]
N16G,
#[serde(rename = "64g")]
N64G,
}
#[derive(Serialize, Deserialize)]
pub struct ContainerNetworkPolicyDisabledParam {}
#[derive(Serialize, Deserialize)]
pub struct ContainerNetworkPolicyAllowlistParam {
pub allowed_domains: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub domain_secrets: Option<Vec<ContainerNetworkPolicyDomainSecretParam>>,
}
#[derive(Serialize, Deserialize)]
pub struct SkillReferenceParam {
pub skill_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct InlineSkillParam {
pub description: String,
pub name: String,
pub source: InlineSkillSourceParam,
}
#[derive(Serialize, Deserialize)]
pub enum GrammarSyntax1 {
#[serde(rename = "lark")]
Lark,
#[serde(rename = "regex")]
Regex,
}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCallOutputTimeoutOutcomeParam {}
#[derive(Serialize, Deserialize)]
pub struct FunctionShellCallOutputExitOutcomeParam {
pub exit_code: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ContainerNetworkPolicyDomainSecretParam {
pub domain: String,
pub name: String,
pub value: String,
}
#[derive(Serialize, Deserialize)]
pub struct InlineSkillSourceParam {
pub data: String,
pub media_type: InlineSkillSourceParamMediaType,
pub r#type: InlineSkillSourceParamType,
}
#[derive(Serialize, Deserialize)]
pub enum InlineSkillSourceParamMediaType {
#[serde(rename = "application/zip")]
ApplicationZip,
}
#[derive(Serialize, Deserialize)]
pub enum InlineSkillSourceParamType {
#[serde(rename = "base64")]
Base64,
}