#![allow(clippy::enum_variant_names)]
#![allow(clippy::struct_field_names)]
#![allow(clippy::doc_markdown)]
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Serialize, Deserialize)]
pub struct CreateMessageParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<CreateMessageParamsCacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub container: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inference_geo: Option<String>,
pub max_tokens: i64,
pub messages: Vec<InputMessage>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
pub model: Model,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_config: Option<OutputConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub service_tier: Option<CreateMessageParamsServiceTier>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stop_sequences: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stream: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub system: Option<CreateMessageParamsSystem>,
#[serde(skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub thinking: Option<ThinkingConfigParam>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tool_choice: Option<ToolChoice>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tools: Option<Vec<CreateMessageParamsToolsItem>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_k: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_p: Option<f64>,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CreateMessageParamsCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub enum CreateMessageParamsServiceTier {
#[serde(rename = "auto")]
Auto,
#[serde(rename = "standard_only")]
StandardOnly,
}
pub type CreateMessageParamsSystemString = Option<String>;
pub type CreateMessageParamsSystemArray = Option<Vec<RequestTextBlock>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum CreateMessageParamsSystem {
CreateMessageParamsSystemString(CreateMessageParamsSystemString),
CreateMessageParamsSystemArray(CreateMessageParamsSystemArray),
}
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum CreateMessageParamsToolsItem {
Tool(Tool),
BashTool20250124(BashTool20250124),
CodeExecutionTool20250522(CodeExecutionTool20250522),
CodeExecutionTool20250825(CodeExecutionTool20250825),
CodeExecutionTool20260120(CodeExecutionTool20260120),
MemoryTool20250818(MemoryTool20250818),
TextEditor20250124(TextEditor20250124),
TextEditor20250429(TextEditor20250429),
TextEditor20250728(TextEditor20250728),
WebSearchTool20250305(WebSearchTool20250305),
WebFetchTool20250910(WebFetchTool20250910),
WebSearchTool20260209(WebSearchTool20260209),
WebFetchTool20260209(WebFetchTool20260209),
WebFetchTool20260309(WebFetchTool20260309),
ToolSearchToolBM2520251119(ToolSearchToolBM2520251119),
ToolSearchToolRegex20251119(ToolSearchToolRegex20251119),
}
#[derive(Serialize, Deserialize)]
pub struct Message {
pub container: Option<Container>,
pub content: Vec<ContentBlock>,
pub id: String,
pub model: Model,
pub role: String,
pub stop_reason: Option<StopReason>,
pub stop_sequence: Option<String>,
pub r#type: String,
pub usage: Usage,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum MessageStreamEvent {
#[serde(rename = "message_start")]
MessageStart(MessageStartEvent),
#[serde(rename = "message_delta")]
MessageDelta(MessageDeltaEvent),
#[serde(rename = "message_stop")]
MessageStop(MessageStopEvent),
#[serde(rename = "content_block_start")]
ContentBlockStart(ContentBlockStartEvent),
#[serde(rename = "content_block_delta")]
ContentBlockDelta(ContentBlockDeltaEvent),
#[serde(rename = "content_block_stop")]
ContentBlockStop(ContentBlockStopEvent),
#[serde(rename = "ping")]
Ping(PingEvent),
}
#[derive(Serialize, Deserialize)]
pub struct PingEvent {}
#[derive(Serialize, Deserialize)]
pub struct CacheControlEphemeral {
#[serde(skip_serializing_if = "Option::is_none")]
pub ttl: Option<CacheControlEphemeralTtl>,
}
#[derive(Serialize, Deserialize)]
pub enum CacheControlEphemeralTtl {
#[serde(rename = "5m")]
N5M,
#[serde(rename = "1h")]
N1H,
}
#[derive(Serialize, Deserialize)]
pub struct InputMessage {
pub content: InputMessageContent,
pub role: InputMessageRole,
}
pub type InputMessageContentString = Option<String>;
pub type InputMessageContentArray = Option<Vec<InputContentBlock>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum InputMessageContent {
InputMessageContentString(InputMessageContentString),
InputMessageContentArray(InputMessageContentArray),
}
#[derive(Serialize, Deserialize)]
pub enum InputMessageRole {
#[serde(rename = "user")]
User,
#[serde(rename = "assistant")]
Assistant,
}
#[derive(Serialize, Deserialize)]
pub struct Metadata {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
}
pub type Model = Option<String>;
#[derive(Serialize, Deserialize)]
pub struct OutputConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub effort: Option<EffortLevel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<JsonOutputFormat>,
}
#[derive(Serialize, Deserialize)]
pub struct RequestTextBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestTextBlockCacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub citations: Option<Vec<RequestTextBlockCitationsItem>>,
pub text: String,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestTextBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestTextBlockCitationsItem {
#[serde(rename = "char_location")]
CharLocation(RequestCharLocationCitation),
#[serde(rename = "page_location")]
PageLocation(RequestPageLocationCitation),
#[serde(rename = "content_block_location")]
ContentBlockLocation(RequestContentBlockLocationCitation),
#[serde(rename = "web_search_result_location")]
WebSearchResultLocation(RequestWebSearchResultLocationCitation),
#[serde(rename = "search_result_location")]
SearchResultLocation(RequestSearchResultLocationCitation),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ThinkingConfigParam {
#[serde(rename = "enabled")]
Enabled(ThinkingConfigEnabled),
#[serde(rename = "disabled")]
Disabled(ThinkingConfigDisabled),
#[serde(rename = "adaptive")]
Adaptive(ThinkingConfigAdaptive),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ToolChoice {
#[serde(rename = "auto")]
Auto(ToolChoiceAuto),
#[serde(rename = "any")]
Any(ToolChoiceAny),
#[serde(rename = "tool")]
Tool(ToolChoiceTool),
#[serde(rename = "none")]
None(ToolChoiceNone),
}
#[derive(Serialize, Deserialize)]
pub struct Tool {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<ToolCacheControl>,
#[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 eager_input_streaming: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_examples: Option<Vec<HashMap<String, JsonValue>>>,
pub input_schema: InputSchema,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ToolCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct BashTool20250124 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<BashTool20250124CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_examples: Option<Vec<HashMap<String, JsonValue>>>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum BashTool20250124CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct CodeExecutionTool20250522 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<CodeExecutionTool20250522CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CodeExecutionTool20250522CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct CodeExecutionTool20250825 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<CodeExecutionTool20250825CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CodeExecutionTool20250825CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct CodeExecutionTool20260120 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<CodeExecutionTool20260120CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CodeExecutionTool20260120CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct MemoryTool20250818 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<MemoryTool20250818CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_examples: Option<Vec<HashMap<String, JsonValue>>>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum MemoryTool20250818CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct TextEditor20250124 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<TextEditor20250124CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_examples: Option<Vec<HashMap<String, JsonValue>>>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum TextEditor20250124CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct TextEditor20250429 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<TextEditor20250429CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_examples: Option<Vec<HashMap<String, JsonValue>>>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum TextEditor20250429CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct TextEditor20250728 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<TextEditor20250728CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_examples: Option<Vec<HashMap<String, JsonValue>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_characters: Option<i64>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum TextEditor20250728CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchTool20250305 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub blocked_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<WebSearchTool20250305CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_uses: Option<i64>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_location: Option<UserLocation>,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum WebSearchTool20250305CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct WebFetchTool20250910 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub blocked_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<WebFetchTool20250910CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub citations: Option<RequestCitationsConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_content_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_uses: Option<i64>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum WebFetchTool20250910CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct WebSearchTool20260209 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub blocked_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<WebSearchTool20260209CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_uses: Option<i64>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_location: Option<UserLocation>,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum WebSearchTool20260209CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct WebFetchTool20260209 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub blocked_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<WebFetchTool20260209CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub citations: Option<RequestCitationsConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_content_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_uses: Option<i64>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum WebFetchTool20260209CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct WebFetchTool20260309 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub blocked_domains: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<WebFetchTool20260309CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub citations: Option<RequestCitationsConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_content_tokens: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_uses: Option<i64>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub use_cache: Option<bool>,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum WebFetchTool20260309CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct ToolSearchToolBM2520251119 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<ToolSearchToolBM2520251119CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: ToolSearchToolBM2520251119Type,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ToolSearchToolBM2520251119CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub enum ToolSearchToolBM2520251119Type {
#[serde(rename = "tool_search_tool_bm25_20251119")]
ToolSearchToolBm2520251119,
#[serde(rename = "tool_search_tool_bm25")]
ToolSearchToolBm25,
}
#[derive(Serialize, Deserialize)]
pub struct ToolSearchToolRegex20251119 {
#[serde(skip_serializing_if = "Option::is_none")]
pub allowed_callers: Option<Vec<AllowedCaller>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<ToolSearchToolRegex20251119CacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub defer_loading: Option<bool>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
pub r#type: ToolSearchToolRegex20251119Type,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ToolSearchToolRegex20251119CacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub enum ToolSearchToolRegex20251119Type {
#[serde(rename = "tool_search_tool_regex_20251119")]
ToolSearchToolRegex20251119,
#[serde(rename = "tool_search_tool_regex")]
ToolSearchToolRegex,
}
#[derive(Serialize, Deserialize)]
pub struct Container {
pub expires_at: String,
pub id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ContentBlock {
#[serde(rename = "text")]
Text(ResponseTextBlock),
#[serde(rename = "thinking")]
Thinking(ResponseThinkingBlock),
#[serde(rename = "redacted_thinking")]
RedactedThinking(ResponseRedactedThinkingBlock),
#[serde(rename = "tool_use")]
ToolUse(ResponseToolUseBlock),
#[serde(rename = "server_tool_use")]
ServerToolUse(ResponseServerToolUseBlock),
#[serde(rename = "web_search_tool_result")]
WebSearchToolResult(ResponseWebSearchToolResultBlock),
#[serde(rename = "web_fetch_tool_result")]
WebFetchToolResult(ResponseWebFetchToolResultBlock),
#[serde(rename = "code_execution_tool_result")]
CodeExecutionToolResult(ResponseCodeExecutionToolResultBlock),
#[serde(rename = "bash_code_execution_tool_result")]
BashCodeExecutionToolResult(ResponseBashCodeExecutionToolResultBlock),
#[serde(rename = "text_editor_code_execution_tool_result")]
TextEditorCodeExecutionToolResult(ResponseTextEditorCodeExecutionToolResultBlock),
#[serde(rename = "tool_search_tool_result")]
ToolSearchToolResult(ResponseToolSearchToolResultBlock),
#[serde(rename = "container_upload")]
ContainerUpload(ResponseContainerUploadBlock),
}
#[derive(Serialize, Deserialize)]
pub enum StopReason {
#[serde(rename = "end_turn")]
EndTurn,
#[serde(rename = "max_tokens")]
MaxTokens,
#[serde(rename = "stop_sequence")]
StopSequence,
#[serde(rename = "tool_use")]
ToolUse,
#[serde(rename = "pause_turn")]
PauseTurn,
#[serde(rename = "refusal")]
Refusal,
}
#[derive(Serialize, Deserialize)]
pub struct Usage {
pub cache_creation: Option<CacheCreation>,
pub cache_creation_input_tokens: Option<i64>,
pub cache_read_input_tokens: Option<i64>,
pub inference_geo: Option<String>,
pub input_tokens: i64,
pub output_tokens: i64,
pub server_tool_use: Option<ServerToolUsage>,
pub service_tier: Option<UsageServiceTier>,
}
#[derive(Serialize, Deserialize)]
pub enum UsageServiceTier {
#[serde(rename = "standard")]
Standard,
#[serde(rename = "priority")]
Priority,
#[serde(rename = "batch")]
Batch,
}
#[derive(Serialize, Deserialize)]
pub struct ContentBlockDeltaEvent {
pub delta: ContentBlockDeltaEventDelta,
pub index: i64,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ContentBlockDeltaEventDelta {
#[serde(rename = "text_delta")]
TextDelta(TextContentBlockDelta),
#[serde(rename = "input_json_delta")]
InputJsonDelta(InputJsonContentBlockDelta),
#[serde(rename = "citations_delta")]
CitationsDelta(CitationsDelta),
#[serde(rename = "thinking_delta")]
ThinkingDelta(ThinkingContentBlockDelta),
#[serde(rename = "signature_delta")]
SignatureDelta(SignatureContentBlockDelta),
}
#[derive(Serialize, Deserialize)]
pub struct ContentBlockStartEvent {
pub content_block: ContentBlockStartEventContentBlock,
pub index: i64,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ContentBlockStartEventContentBlock {
#[serde(rename = "text")]
Text(ResponseTextBlock),
#[serde(rename = "thinking")]
Thinking(ResponseThinkingBlock),
#[serde(rename = "redacted_thinking")]
RedactedThinking(ResponseRedactedThinkingBlock),
#[serde(rename = "tool_use")]
ToolUse(ResponseToolUseBlock),
#[serde(rename = "server_tool_use")]
ServerToolUse(ResponseServerToolUseBlock),
#[serde(rename = "web_search_tool_result")]
WebSearchToolResult(ResponseWebSearchToolResultBlock),
#[serde(rename = "web_fetch_tool_result")]
WebFetchToolResult(ResponseWebFetchToolResultBlock),
#[serde(rename = "code_execution_tool_result")]
CodeExecutionToolResult(ResponseCodeExecutionToolResultBlock),
#[serde(rename = "bash_code_execution_tool_result")]
BashCodeExecutionToolResult(ResponseBashCodeExecutionToolResultBlock),
#[serde(rename = "text_editor_code_execution_tool_result")]
TextEditorCodeExecutionToolResult(ResponseTextEditorCodeExecutionToolResultBlock),
#[serde(rename = "tool_search_tool_result")]
ToolSearchToolResult(ResponseToolSearchToolResultBlock),
#[serde(rename = "container_upload")]
ContainerUpload(ResponseContainerUploadBlock),
}
#[derive(Serialize, Deserialize)]
pub struct ContentBlockStopEvent {
pub index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct MessageDeltaEvent {
pub delta: MessageDelta,
pub usage: MessageDeltaUsage,
}
#[derive(Serialize, Deserialize)]
pub struct MessageStartEvent {
pub message: Message,
}
#[derive(Serialize, Deserialize)]
pub struct MessageStopEvent {}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum InputContentBlock {
#[serde(rename = "text")]
Text(RequestTextBlock),
#[serde(rename = "image")]
Image(RequestImageBlock),
#[serde(rename = "document")]
Document(RequestDocumentBlock),
#[serde(rename = "search_result")]
SearchResult(RequestSearchResultBlock),
#[serde(rename = "thinking")]
Thinking(RequestThinkingBlock),
#[serde(rename = "redacted_thinking")]
RedactedThinking(RequestRedactedThinkingBlock),
#[serde(rename = "tool_use")]
ToolUse(RequestToolUseBlock),
#[serde(rename = "tool_result")]
ToolResult(RequestToolResultBlock),
#[serde(rename = "server_tool_use")]
ServerToolUse(RequestServerToolUseBlock),
#[serde(rename = "web_search_tool_result")]
WebSearchToolResult(RequestWebSearchToolResultBlock),
#[serde(rename = "web_fetch_tool_result")]
WebFetchToolResult(RequestWebFetchToolResultBlock),
#[serde(rename = "code_execution_tool_result")]
CodeExecutionToolResult(RequestCodeExecutionToolResultBlock),
#[serde(rename = "bash_code_execution_tool_result")]
BashCodeExecutionToolResult(RequestBashCodeExecutionToolResultBlock),
#[serde(rename = "text_editor_code_execution_tool_result")]
TextEditorCodeExecutionToolResult(RequestTextEditorCodeExecutionToolResultBlock),
#[serde(rename = "tool_search_tool_result")]
ToolSearchToolResult(RequestToolSearchToolResultBlock),
#[serde(rename = "container_upload")]
ContainerUpload(RequestContainerUploadBlock),
}
#[derive(Serialize, Deserialize)]
pub enum EffortLevel {
#[serde(rename = "low")]
Low,
#[serde(rename = "medium")]
Medium,
#[serde(rename = "high")]
High,
#[serde(rename = "max")]
Max,
}
#[derive(Serialize, Deserialize)]
pub struct JsonOutputFormat {
pub schema: Value,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestCharLocationCitation {
pub cited_text: String,
pub document_index: i64,
pub document_title: Option<String>,
pub end_char_index: i64,
pub start_char_index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct RequestContentBlockLocationCitation {
pub cited_text: String,
pub document_index: i64,
pub document_title: Option<String>,
pub end_block_index: i64,
pub start_block_index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct RequestPageLocationCitation {
pub cited_text: String,
pub document_index: i64,
pub document_title: Option<String>,
pub end_page_number: i64,
pub start_page_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct RequestSearchResultLocationCitation {
pub cited_text: String,
pub end_block_index: i64,
pub search_result_index: i64,
pub source: String,
pub start_block_index: i64,
pub title: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct RequestWebSearchResultLocationCitation {
pub cited_text: String,
pub encrypted_index: String,
pub title: Option<String>,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct ThinkingConfigAdaptive {
#[serde(skip_serializing_if = "Option::is_none")]
pub display: Option<ThinkingDisplayMode>,
}
#[derive(Serialize, Deserialize)]
pub struct ThinkingConfigDisabled {}
#[derive(Serialize, Deserialize)]
pub struct ThinkingConfigEnabled {
pub budget_tokens: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub display: Option<ThinkingDisplayMode>,
}
#[derive(Serialize, Deserialize)]
pub struct ToolChoiceAny {
#[serde(skip_serializing_if = "Option::is_none")]
pub disable_parallel_tool_use: Option<bool>,
}
#[derive(Serialize, Deserialize)]
pub struct ToolChoiceAuto {
#[serde(skip_serializing_if = "Option::is_none")]
pub disable_parallel_tool_use: Option<bool>,
}
#[derive(Serialize, Deserialize)]
pub struct ToolChoiceNone {}
#[derive(Serialize, Deserialize)]
pub struct ToolChoiceTool {
#[serde(skip_serializing_if = "Option::is_none")]
pub disable_parallel_tool_use: Option<bool>,
pub name: String,
}
#[derive(Serialize, Deserialize)]
pub enum AllowedCaller {
#[serde(rename = "direct")]
Direct,
#[serde(rename = "code_execution_20250825")]
CodeExecution20250825,
#[serde(rename = "code_execution_20260120")]
CodeExecution20260120,
}
pub type JsonValue = Option<Value>;
pub type InputSchema = Option<Value>;
#[derive(Serialize, Deserialize)]
pub struct UserLocation {
#[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: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestCitationsConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseBashCodeExecutionToolResultBlock {
pub content: ResponseBashCodeExecutionToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseBashCodeExecutionToolResultBlockContent {
#[serde(rename = "bash_code_execution_tool_result_error")]
BashCodeExecutionToolResultError(ResponseBashCodeExecutionToolResultError),
#[serde(rename = "bash_code_execution_result")]
BashCodeExecutionResult(ResponseBashCodeExecutionResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCodeExecutionToolResultBlock {
pub content: ResponseCodeExecutionToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseCodeExecutionToolResultBlockContent {
#[serde(rename = "code_execution_tool_result_error")]
CodeExecutionToolResultError(ResponseCodeExecutionToolResultError),
#[serde(rename = "code_execution_result")]
CodeExecutionResult(ResponseCodeExecutionResultBlock),
#[serde(rename = "encrypted_code_execution_result")]
EncryptedCodeExecutionResult(ResponseEncryptedCodeExecutionResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct ResponseContainerUploadBlock {
pub file_id: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseRedactedThinkingBlock {
pub data: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseServerToolUseBlock {
pub caller: ResponseServerToolUseBlockCaller,
pub id: String,
pub input: Value,
pub name: ResponseServerToolUseBlockName,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseServerToolUseBlockCaller {
#[serde(rename = "direct")]
Direct(DirectCaller),
#[serde(rename = "code_execution_20250825")]
CodeExecution20250825(ServerToolCaller),
#[serde(rename = "code_execution_20260120")]
CodeExecution20260120(ServerToolCaller20260120),
}
#[derive(Serialize, Deserialize)]
pub enum ResponseServerToolUseBlockName {
#[serde(rename = "web_search")]
WebSearch,
#[serde(rename = "web_fetch")]
WebFetch,
#[serde(rename = "code_execution")]
CodeExecution,
#[serde(rename = "bash_code_execution")]
BashCodeExecution,
#[serde(rename = "text_editor_code_execution")]
TextEditorCodeExecution,
#[serde(rename = "tool_search_tool_regex")]
ToolSearchToolRegex,
#[serde(rename = "tool_search_tool_bm25")]
ToolSearchToolBm25,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseTextBlock {
pub citations: Option<Vec<ResponseTextBlockCitationsItem>>,
pub text: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseTextBlockCitationsItem {
#[serde(rename = "char_location")]
CharLocation(ResponseCharLocationCitation),
#[serde(rename = "page_location")]
PageLocation(ResponsePageLocationCitation),
#[serde(rename = "content_block_location")]
ContentBlockLocation(ResponseContentBlockLocationCitation),
#[serde(rename = "web_search_result_location")]
WebSearchResultLocation(ResponseWebSearchResultLocationCitation),
#[serde(rename = "search_result_location")]
SearchResultLocation(ResponseSearchResultLocationCitation),
}
#[derive(Serialize, Deserialize)]
pub struct ResponseTextEditorCodeExecutionToolResultBlock {
pub content: ResponseTextEditorCodeExecutionToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseTextEditorCodeExecutionToolResultBlockContent {
#[serde(rename = "text_editor_code_execution_tool_result_error")]
TextEditorCodeExecutionToolResultError(ResponseTextEditorCodeExecutionToolResultError),
#[serde(rename = "text_editor_code_execution_view_result")]
TextEditorCodeExecutionViewResult(ResponseTextEditorCodeExecutionViewResultBlock),
#[serde(rename = "text_editor_code_execution_create_result")]
TextEditorCodeExecutionCreateResult(ResponseTextEditorCodeExecutionCreateResultBlock),
#[serde(rename = "text_editor_code_execution_str_replace_result")]
TextEditorCodeExecutionStrReplaceResult(ResponseTextEditorCodeExecutionStrReplaceResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct ResponseThinkingBlock {
pub signature: String,
pub thinking: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseToolSearchToolResultBlock {
pub content: ResponseToolSearchToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseToolSearchToolResultBlockContent {
#[serde(rename = "tool_search_tool_result_error")]
ToolSearchToolResultError(ResponseToolSearchToolResultError),
#[serde(rename = "tool_search_tool_search_result")]
ToolSearchToolSearchResult(ResponseToolSearchToolSearchResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct ResponseToolUseBlock {
pub caller: ResponseToolUseBlockCaller,
pub id: String,
pub input: Value,
pub name: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseToolUseBlockCaller {
#[serde(rename = "direct")]
Direct(DirectCaller),
#[serde(rename = "code_execution_20250825")]
CodeExecution20250825(ServerToolCaller),
#[serde(rename = "code_execution_20260120")]
CodeExecution20260120(ServerToolCaller20260120),
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebFetchToolResultBlock {
pub caller: ResponseWebFetchToolResultBlockCaller,
pub content: ResponseWebFetchToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseWebFetchToolResultBlockCaller {
#[serde(rename = "direct")]
Direct(DirectCaller),
#[serde(rename = "code_execution_20250825")]
CodeExecution20250825(ServerToolCaller),
#[serde(rename = "code_execution_20260120")]
CodeExecution20260120(ServerToolCaller20260120),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseWebFetchToolResultBlockContent {
#[serde(rename = "web_fetch_tool_result_error")]
WebFetchToolResultError(ResponseWebFetchToolResultError),
#[serde(rename = "web_fetch_result")]
WebFetchResult(ResponseWebFetchResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebSearchToolResultBlock {
pub caller: ResponseWebSearchToolResultBlockCaller,
pub content: ResponseWebSearchToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseWebSearchToolResultBlockCaller {
#[serde(rename = "direct")]
Direct(DirectCaller),
#[serde(rename = "code_execution_20250825")]
CodeExecution20250825(ServerToolCaller),
#[serde(rename = "code_execution_20260120")]
CodeExecution20260120(ServerToolCaller20260120),
}
pub type ResponseWebSearchToolResultBlockContentArray = Option<Vec<ResponseWebSearchResultBlock>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ResponseWebSearchToolResultBlockContent {
ResponseWebSearchToolResultError(ResponseWebSearchToolResultError),
ResponseWebSearchToolResultBlockContentArray(ResponseWebSearchToolResultBlockContentArray),
}
#[derive(Serialize, Deserialize)]
pub struct CacheCreation {
#[serde(rename = "ephemeral_1h_input_tokens")]
pub ephemeral_1_h_input_tokens: i64,
#[serde(rename = "ephemeral_5m_input_tokens")]
pub ephemeral_5_m_input_tokens: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ServerToolUsage {
pub web_fetch_requests: i64,
pub web_search_requests: i64,
}
#[derive(Serialize, Deserialize)]
pub struct CitationsDelta {
pub citation: CitationsDeltaCitation,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CitationsDeltaCitation {
#[serde(rename = "char_location")]
CharLocation(ResponseCharLocationCitation),
#[serde(rename = "page_location")]
PageLocation(ResponsePageLocationCitation),
#[serde(rename = "content_block_location")]
ContentBlockLocation(ResponseContentBlockLocationCitation),
#[serde(rename = "web_search_result_location")]
WebSearchResultLocation(ResponseWebSearchResultLocationCitation),
#[serde(rename = "search_result_location")]
SearchResultLocation(ResponseSearchResultLocationCitation),
}
#[derive(Serialize, Deserialize)]
pub struct InputJsonContentBlockDelta {
pub partial_json: String,
}
#[derive(Serialize, Deserialize)]
pub struct SignatureContentBlockDelta {
pub signature: String,
}
#[derive(Serialize, Deserialize)]
pub struct TextContentBlockDelta {
pub text: String,
}
#[derive(Serialize, Deserialize)]
pub struct ThinkingContentBlockDelta {
pub thinking: String,
}
#[derive(Serialize, Deserialize)]
pub struct MessageDelta {
pub container: Option<Container>,
pub stop_reason: Option<StopReason>,
pub stop_sequence: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct MessageDeltaUsage {
pub cache_creation_input_tokens: Option<i64>,
pub cache_read_input_tokens: Option<i64>,
pub input_tokens: Option<i64>,
pub output_tokens: i64,
pub server_tool_use: Option<ServerToolUsage>,
}
#[derive(Serialize, Deserialize)]
pub struct RequestBashCodeExecutionToolResultBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestBashCodeExecutionToolResultBlockCacheControl>,
pub content: RequestBashCodeExecutionToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestBashCodeExecutionToolResultBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestBashCodeExecutionToolResultBlockContent {
#[serde(rename = "bash_code_execution_tool_result_error")]
BashCodeExecutionToolResultError(RequestBashCodeExecutionToolResultError),
#[serde(rename = "bash_code_execution_result")]
BashCodeExecutionResult(RequestBashCodeExecutionResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct RequestCodeExecutionToolResultBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestCodeExecutionToolResultBlockCacheControl>,
pub content: RequestCodeExecutionToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestCodeExecutionToolResultBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestCodeExecutionToolResultBlockContent {
#[serde(rename = "code_execution_tool_result_error")]
CodeExecutionToolResultError(RequestCodeExecutionToolResultError),
#[serde(rename = "code_execution_result")]
CodeExecutionResult(RequestCodeExecutionResultBlock),
#[serde(rename = "encrypted_code_execution_result")]
EncryptedCodeExecutionResult(RequestEncryptedCodeExecutionResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct RequestContainerUploadBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestContainerUploadBlockCacheControl>,
pub file_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestContainerUploadBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct RequestDocumentBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestDocumentBlockCacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub citations: Option<RequestCitationsConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<String>,
pub source: RequestDocumentBlockSource,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestDocumentBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestDocumentBlockSource {
#[serde(rename = "base64")]
Base64(Base64PDFSource),
#[serde(rename = "text")]
Text(PlainTextSource),
#[serde(rename = "content")]
Content(ContentBlockSource),
#[serde(rename = "url")]
Url(URLPDFSource),
}
#[derive(Serialize, Deserialize)]
pub struct RequestImageBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestImageBlockCacheControl>,
pub source: RequestImageBlockSource,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestImageBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestImageBlockSource {
#[serde(rename = "base64")]
Base64(Base64ImageSource),
#[serde(rename = "url")]
Url(URLImageSource),
}
#[derive(Serialize, Deserialize)]
pub struct RequestRedactedThinkingBlock {
pub data: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestSearchResultBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestSearchResultBlockCacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub citations: Option<RequestCitationsConfig>,
pub content: Vec<RequestTextBlock>,
pub source: String,
pub title: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestSearchResultBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct RequestServerToolUseBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestServerToolUseBlockCacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caller: Option<RequestServerToolUseBlockCaller>,
pub id: String,
pub input: Value,
pub name: RequestServerToolUseBlockName,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestServerToolUseBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestServerToolUseBlockCaller {
#[serde(rename = "direct")]
Direct(DirectCaller),
#[serde(rename = "code_execution_20250825")]
CodeExecution20250825(ServerToolCaller),
#[serde(rename = "code_execution_20260120")]
CodeExecution20260120(ServerToolCaller20260120),
}
#[derive(Serialize, Deserialize)]
pub enum RequestServerToolUseBlockName {
#[serde(rename = "web_search")]
WebSearch,
#[serde(rename = "web_fetch")]
WebFetch,
#[serde(rename = "code_execution")]
CodeExecution,
#[serde(rename = "bash_code_execution")]
BashCodeExecution,
#[serde(rename = "text_editor_code_execution")]
TextEditorCodeExecution,
#[serde(rename = "tool_search_tool_regex")]
ToolSearchToolRegex,
#[serde(rename = "tool_search_tool_bm25")]
ToolSearchToolBm25,
}
#[derive(Serialize, Deserialize)]
pub struct RequestTextEditorCodeExecutionToolResultBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestTextEditorCodeExecutionToolResultBlockCacheControl>,
pub content: RequestTextEditorCodeExecutionToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestTextEditorCodeExecutionToolResultBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestTextEditorCodeExecutionToolResultBlockContent {
#[serde(rename = "text_editor_code_execution_tool_result_error")]
TextEditorCodeExecutionToolResultError(RequestTextEditorCodeExecutionToolResultError),
#[serde(rename = "text_editor_code_execution_view_result")]
TextEditorCodeExecutionViewResult(RequestTextEditorCodeExecutionViewResultBlock),
#[serde(rename = "text_editor_code_execution_create_result")]
TextEditorCodeExecutionCreateResult(RequestTextEditorCodeExecutionCreateResultBlock),
#[serde(rename = "text_editor_code_execution_str_replace_result")]
TextEditorCodeExecutionStrReplaceResult(RequestTextEditorCodeExecutionStrReplaceResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct RequestThinkingBlock {
pub signature: String,
pub thinking: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestToolResultBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestToolResultBlockCacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<RequestToolResultBlockContent>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_error: Option<bool>,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestToolResultBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
pub type RequestToolResultBlockContentString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestToolResultBlockContentArrayItem {
#[serde(rename = "text")]
Text(RequestTextBlock),
#[serde(rename = "image")]
Image(RequestImageBlock),
#[serde(rename = "search_result")]
SearchResult(RequestSearchResultBlock),
#[serde(rename = "document")]
Document(RequestDocumentBlock),
#[serde(rename = "tool_reference")]
ToolReference(RequestToolReferenceBlock),
}
pub type RequestToolResultBlockContentArray = Option<Vec<RequestToolResultBlockContentArrayItem>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum RequestToolResultBlockContent {
RequestToolResultBlockContentString(RequestToolResultBlockContentString),
RequestToolResultBlockContentArray(RequestToolResultBlockContentArray),
}
#[derive(Serialize, Deserialize)]
pub struct RequestToolSearchToolResultBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestToolSearchToolResultBlockCacheControl>,
pub content: RequestToolSearchToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestToolSearchToolResultBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestToolSearchToolResultBlockContent {
#[serde(rename = "tool_search_tool_result_error")]
ToolSearchToolResultError(RequestToolSearchToolResultError),
#[serde(rename = "tool_search_tool_search_result")]
ToolSearchToolSearchResult(RequestToolSearchToolSearchResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct RequestToolUseBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestToolUseBlockCacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caller: Option<RequestToolUseBlockCaller>,
pub id: String,
pub input: Value,
pub name: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestToolUseBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestToolUseBlockCaller {
#[serde(rename = "direct")]
Direct(DirectCaller),
#[serde(rename = "code_execution_20250825")]
CodeExecution20250825(ServerToolCaller),
#[serde(rename = "code_execution_20260120")]
CodeExecution20260120(ServerToolCaller20260120),
}
#[derive(Serialize, Deserialize)]
pub struct RequestWebFetchToolResultBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestWebFetchToolResultBlockCacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caller: Option<RequestWebFetchToolResultBlockCaller>,
pub content: RequestWebFetchToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestWebFetchToolResultBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestWebFetchToolResultBlockCaller {
#[serde(rename = "direct")]
Direct(DirectCaller),
#[serde(rename = "code_execution_20250825")]
CodeExecution20250825(ServerToolCaller),
#[serde(rename = "code_execution_20260120")]
CodeExecution20260120(ServerToolCaller20260120),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestWebFetchToolResultBlockContent {
#[serde(rename = "web_fetch_tool_result_error")]
WebFetchToolResultError(RequestWebFetchToolResultError),
#[serde(rename = "web_fetch_result")]
WebFetchResult(RequestWebFetchResultBlock),
}
#[derive(Serialize, Deserialize)]
pub struct RequestWebSearchToolResultBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestWebSearchToolResultBlockCacheControl>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caller: Option<RequestWebSearchToolResultBlockCaller>,
pub content: RequestWebSearchToolResultBlockContent,
pub tool_use_id: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestWebSearchToolResultBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestWebSearchToolResultBlockCaller {
#[serde(rename = "direct")]
Direct(DirectCaller),
#[serde(rename = "code_execution_20250825")]
CodeExecution20250825(ServerToolCaller),
#[serde(rename = "code_execution_20260120")]
CodeExecution20260120(ServerToolCaller20260120),
}
pub type RequestWebSearchToolResultBlockContentArray = Option<Vec<RequestWebSearchResultBlock>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum RequestWebSearchToolResultBlockContent {
RequestWebSearchToolResultBlockContentArray(RequestWebSearchToolResultBlockContentArray),
RequestWebSearchToolResultError(RequestWebSearchToolResultError),
}
#[derive(Serialize, Deserialize)]
pub enum ThinkingDisplayMode {
#[serde(rename = "summarized")]
Summarized,
#[serde(rename = "omitted")]
Omitted,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseBashCodeExecutionToolResultError {
pub error_code: BashCodeExecutionToolResultErrorCode,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseBashCodeExecutionResultBlock {
pub content: Vec<ResponseBashCodeExecutionOutputBlock>,
pub return_code: i64,
pub stderr: String,
pub stdout: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCodeExecutionToolResultError {
pub error_code: CodeExecutionToolResultErrorCode,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCodeExecutionResultBlock {
pub content: Vec<ResponseCodeExecutionOutputBlock>,
pub return_code: i64,
pub stderr: String,
pub stdout: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseEncryptedCodeExecutionResultBlock {
pub content: Vec<ResponseCodeExecutionOutputBlock>,
pub encrypted_stdout: String,
pub return_code: i64,
pub stderr: String,
}
#[derive(Serialize, Deserialize)]
pub struct ServerToolCaller {
pub tool_id: String,
}
#[derive(Serialize, Deserialize)]
pub struct ServerToolCaller20260120 {
pub tool_id: String,
}
#[derive(Serialize, Deserialize)]
pub struct DirectCaller {}
#[derive(Serialize, Deserialize)]
pub struct ResponseCharLocationCitation {
pub cited_text: String,
pub document_index: i64,
pub document_title: Option<String>,
pub end_char_index: i64,
pub file_id: Option<String>,
pub start_char_index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseContentBlockLocationCitation {
pub cited_text: String,
pub document_index: i64,
pub document_title: Option<String>,
pub end_block_index: i64,
pub file_id: Option<String>,
pub start_block_index: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponsePageLocationCitation {
pub cited_text: String,
pub document_index: i64,
pub document_title: Option<String>,
pub end_page_number: i64,
pub file_id: Option<String>,
pub start_page_number: i64,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseSearchResultLocationCitation {
pub cited_text: String,
pub end_block_index: i64,
pub search_result_index: i64,
pub source: String,
pub start_block_index: i64,
pub title: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebSearchResultLocationCitation {
pub cited_text: String,
pub encrypted_index: String,
pub title: Option<String>,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseTextEditorCodeExecutionToolResultError {
pub error_code: TextEditorCodeExecutionToolResultErrorCode,
pub error_message: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseTextEditorCodeExecutionViewResultBlock {
pub content: String,
pub file_type: ResponseTextEditorCodeExecutionViewResultBlockFileType,
pub num_lines: Option<i64>,
pub start_line: Option<i64>,
pub total_lines: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub enum ResponseTextEditorCodeExecutionViewResultBlockFileType {
#[serde(rename = "text")]
Text,
#[serde(rename = "image")]
Image,
#[serde(rename = "pdf")]
Pdf,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseTextEditorCodeExecutionCreateResultBlock {
pub is_file_update: bool,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseTextEditorCodeExecutionStrReplaceResultBlock {
pub lines: Option<Vec<String>>,
pub new_lines: Option<i64>,
pub new_start: Option<i64>,
pub old_lines: Option<i64>,
pub old_start: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseToolSearchToolResultError {
pub error_code: ToolSearchToolResultErrorCode,
pub error_message: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseToolSearchToolSearchResultBlock {
pub tool_references: Vec<ResponseToolReferenceBlock>,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebFetchToolResultError {
pub error_code: WebFetchToolResultErrorCode,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebFetchResultBlock {
pub content: ResponseDocumentBlock,
pub retrieved_at: Option<String>,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebSearchToolResultError {
pub error_code: WebSearchToolResultErrorCode,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseWebSearchResultBlock {
pub encrypted_content: String,
pub page_age: Option<String>,
pub title: String,
pub r#type: String,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestBashCodeExecutionToolResultError {
pub error_code: BashCodeExecutionToolResultErrorCode,
}
#[derive(Serialize, Deserialize)]
pub struct RequestBashCodeExecutionResultBlock {
pub content: Vec<RequestBashCodeExecutionOutputBlock>,
pub return_code: i64,
pub stderr: String,
pub stdout: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestCodeExecutionToolResultError {
pub error_code: CodeExecutionToolResultErrorCode,
}
#[derive(Serialize, Deserialize)]
pub struct RequestCodeExecutionResultBlock {
pub content: Vec<RequestCodeExecutionOutputBlock>,
pub return_code: i64,
pub stderr: String,
pub stdout: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestEncryptedCodeExecutionResultBlock {
pub content: Vec<RequestCodeExecutionOutputBlock>,
pub encrypted_stdout: String,
pub return_code: i64,
pub stderr: String,
}
#[derive(Serialize, Deserialize)]
pub struct Base64PDFSource {
pub data: String,
pub media_type: String,
}
#[derive(Serialize, Deserialize)]
pub struct ContentBlockSource {
pub content: ContentBlockSourceContent,
}
pub type ContentBlockSourceContentString = Option<String>;
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ContentBlockSourceContentArrayItem {
#[serde(rename = "text")]
Text(RequestTextBlock),
#[serde(rename = "image")]
Image(RequestImageBlock),
}
pub type ContentBlockSourceContentArray = Option<Vec<ContentBlockSourceContentArrayItem>>;
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
pub enum ContentBlockSourceContent {
ContentBlockSourceContentString(ContentBlockSourceContentString),
ContentBlockSourceContentArray(ContentBlockSourceContentArray),
}
#[derive(Serialize, Deserialize)]
pub struct PlainTextSource {
pub data: String,
pub media_type: String,
}
#[derive(Serialize, Deserialize)]
pub struct URLPDFSource {
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct Base64ImageSource {
pub data: String,
pub media_type: Base64ImageSourceMediaType,
}
#[derive(Serialize, Deserialize)]
pub enum Base64ImageSourceMediaType {
#[serde(rename = "image/jpeg")]
ImageJpeg,
#[serde(rename = "image/png")]
ImagePng,
#[serde(rename = "image/gif")]
ImageGif,
#[serde(rename = "image/webp")]
ImageWebp,
}
#[derive(Serialize, Deserialize)]
pub struct URLImageSource {
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestTextEditorCodeExecutionToolResultError {
pub error_code: TextEditorCodeExecutionToolResultErrorCode,
#[serde(skip_serializing_if = "Option::is_none")]
pub error_message: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct RequestTextEditorCodeExecutionViewResultBlock {
pub content: String,
pub file_type: RequestTextEditorCodeExecutionViewResultBlockFileType,
#[serde(skip_serializing_if = "Option::is_none")]
pub num_lines: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_line: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_lines: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub enum RequestTextEditorCodeExecutionViewResultBlockFileType {
#[serde(rename = "text")]
Text,
#[serde(rename = "image")]
Image,
#[serde(rename = "pdf")]
Pdf,
}
#[derive(Serialize, Deserialize)]
pub struct RequestTextEditorCodeExecutionCreateResultBlock {
pub is_file_update: bool,
}
#[derive(Serialize, Deserialize)]
pub struct RequestTextEditorCodeExecutionStrReplaceResultBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub lines: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub new_lines: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub new_start: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub old_lines: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub old_start: Option<i64>,
}
#[derive(Serialize, Deserialize)]
pub struct RequestToolReferenceBlock {
#[serde(skip_serializing_if = "Option::is_none")]
pub cache_control: Option<RequestToolReferenceBlockCacheControl>,
pub tool_name: String,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum RequestToolReferenceBlockCacheControl {
#[serde(rename = "ephemeral")]
Ephemeral(CacheControlEphemeral),
}
#[derive(Serialize, Deserialize)]
pub struct RequestToolSearchToolResultError {
pub error_code: ToolSearchToolResultErrorCode,
}
#[derive(Serialize, Deserialize)]
pub struct RequestToolSearchToolSearchResultBlock {
pub tool_references: Vec<RequestToolReferenceBlock>,
}
#[derive(Serialize, Deserialize)]
pub struct RequestWebFetchToolResultError {
pub error_code: WebFetchToolResultErrorCode,
}
#[derive(Serialize, Deserialize)]
pub struct RequestWebFetchResultBlock {
pub content: RequestDocumentBlock,
#[serde(skip_serializing_if = "Option::is_none")]
pub retrieved_at: Option<String>,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestWebSearchResultBlock {
pub encrypted_content: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_age: Option<String>,
pub title: String,
pub r#type: String,
pub url: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestWebSearchToolResultError {
pub error_code: WebSearchToolResultErrorCode,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
pub enum BashCodeExecutionToolResultErrorCode {
#[serde(rename = "invalid_tool_input")]
InvalidToolInput,
#[serde(rename = "unavailable")]
Unavailable,
#[serde(rename = "too_many_requests")]
TooManyRequests,
#[serde(rename = "execution_time_exceeded")]
ExecutionTimeExceeded,
#[serde(rename = "output_file_too_large")]
OutputFileTooLarge,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseBashCodeExecutionOutputBlock {
pub file_id: String,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
pub enum CodeExecutionToolResultErrorCode {
#[serde(rename = "invalid_tool_input")]
InvalidToolInput,
#[serde(rename = "unavailable")]
Unavailable,
#[serde(rename = "too_many_requests")]
TooManyRequests,
#[serde(rename = "execution_time_exceeded")]
ExecutionTimeExceeded,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCodeExecutionOutputBlock {
pub file_id: String,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
pub enum TextEditorCodeExecutionToolResultErrorCode {
#[serde(rename = "invalid_tool_input")]
InvalidToolInput,
#[serde(rename = "unavailable")]
Unavailable,
#[serde(rename = "too_many_requests")]
TooManyRequests,
#[serde(rename = "execution_time_exceeded")]
ExecutionTimeExceeded,
#[serde(rename = "file_not_found")]
FileNotFound,
}
#[derive(Serialize, Deserialize)]
pub enum ToolSearchToolResultErrorCode {
#[serde(rename = "invalid_tool_input")]
InvalidToolInput,
#[serde(rename = "unavailable")]
Unavailable,
#[serde(rename = "too_many_requests")]
TooManyRequests,
#[serde(rename = "execution_time_exceeded")]
ExecutionTimeExceeded,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseToolReferenceBlock {
pub tool_name: String,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
pub enum WebFetchToolResultErrorCode {
#[serde(rename = "invalid_tool_input")]
InvalidToolInput,
#[serde(rename = "url_too_long")]
UrlTooLong,
#[serde(rename = "url_not_allowed")]
UrlNotAllowed,
#[serde(rename = "url_not_accessible")]
UrlNotAccessible,
#[serde(rename = "unsupported_content_type")]
UnsupportedContentType,
#[serde(rename = "too_many_requests")]
TooManyRequests,
#[serde(rename = "max_uses_exceeded")]
MaxUsesExceeded,
#[serde(rename = "unavailable")]
Unavailable,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseDocumentBlock {
pub citations: Option<ResponseCitationsConfig>,
pub source: ResponseDocumentBlockSource,
pub title: Option<String>,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ResponseDocumentBlockSource {
#[serde(rename = "base64")]
Base64(Base64PDFSource),
#[serde(rename = "text")]
Text(PlainTextSource),
}
#[derive(Serialize, Deserialize)]
pub enum WebSearchToolResultErrorCode {
#[serde(rename = "invalid_tool_input")]
InvalidToolInput,
#[serde(rename = "unavailable")]
Unavailable,
#[serde(rename = "max_uses_exceeded")]
MaxUsesExceeded,
#[serde(rename = "too_many_requests")]
TooManyRequests,
#[serde(rename = "query_too_long")]
QueryTooLong,
#[serde(rename = "request_too_large")]
RequestTooLarge,
}
#[derive(Serialize, Deserialize)]
pub struct RequestBashCodeExecutionOutputBlock {
pub file_id: String,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
pub struct RequestCodeExecutionOutputBlock {
pub file_id: String,
pub r#type: String,
}
#[derive(Serialize, Deserialize)]
pub struct ResponseCitationsConfig {
pub enabled: bool,
}