gproxy_protocol/claude/create_message/
request.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::claude::create_message::types::{
6 AnthropicBeta, AnthropicVersion, BetaCacheControlEphemeral, BetaContainerRef,
7 BetaContextManagementConfig, BetaMessageParam, BetaMetadata, BetaOutputConfig,
8 BetaRequestMcpServerUrlDefinition, BetaServiceTierParam, BetaSpeed, BetaSystemPrompt,
9 BetaThinkingConfigParam, BetaToolChoice, BetaToolUnion, HttpMethod, Model,
10};
11
12#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
14pub struct ClaudeCreateMessageRequest {
15 pub method: HttpMethod,
17 pub path: PathParameters,
19 pub query: QueryParameters,
21 pub headers: RequestHeaders,
23 pub body: RequestBody,
25}
26
27impl Default for ClaudeCreateMessageRequest {
28 fn default() -> Self {
29 Self {
30 method: HttpMethod::Post,
31 path: PathParameters::default(),
32 query: QueryParameters::default(),
33 headers: RequestHeaders::default(),
34 body: RequestBody::default(),
35 }
36 }
37}
38
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
41pub struct PathParameters {}
42
43#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
45pub struct QueryParameters {}
46
47#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
48pub struct RequestHeaders {
49 #[serde(rename = "anthropic-version")]
51 pub anthropic_version: AnthropicVersion,
52 #[serde(
54 rename = "anthropic-beta",
55 default,
56 skip_serializing_if = "Option::is_none"
57 )]
58 pub anthropic_beta: Option<Vec<AnthropicBeta>>,
59 #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
60 pub extra: BTreeMap<String, String>,
61}
62
63#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
64pub struct RequestBody {
65 pub max_tokens: u64,
67 pub messages: Vec<BetaMessageParam>,
69 pub model: Model,
71 #[serde(default, skip_serializing_if = "Option::is_none")]
73 pub container: Option<BetaContainerRef>,
74 #[serde(default, skip_serializing_if = "Option::is_none")]
76 pub context_management: Option<BetaContextManagementConfig>,
77 #[serde(default, skip_serializing_if = "Option::is_none")]
79 pub inference_geo: Option<String>,
80 #[serde(default, skip_serializing_if = "Option::is_none")]
82 pub mcp_servers: Option<Vec<BetaRequestMcpServerUrlDefinition>>,
83 #[serde(default, skip_serializing_if = "Option::is_none")]
85 pub metadata: Option<BetaMetadata>,
86 #[serde(default, skip_serializing_if = "Option::is_none")]
88 pub cache_control: Option<BetaCacheControlEphemeral>,
89 #[serde(default, skip_serializing_if = "Option::is_none")]
91 pub output_config: Option<BetaOutputConfig>,
92 #[serde(default, skip_serializing_if = "Option::is_none")]
94 pub service_tier: Option<BetaServiceTierParam>,
95 #[serde(default, skip_serializing_if = "Option::is_none")]
97 pub speed: Option<BetaSpeed>,
98 #[serde(default, skip_serializing_if = "Option::is_none")]
100 pub stop_sequences: Option<Vec<String>>,
101 #[serde(default, skip_serializing_if = "Option::is_none")]
103 pub stream: Option<bool>,
104 #[serde(default, skip_serializing_if = "Option::is_none")]
106 pub system: Option<BetaSystemPrompt>,
107 #[serde(default, skip_serializing_if = "Option::is_none")]
109 pub temperature: Option<f64>,
110 #[serde(default, skip_serializing_if = "Option::is_none")]
112 pub thinking: Option<BetaThinkingConfigParam>,
113 #[serde(default, skip_serializing_if = "Option::is_none")]
115 pub tool_choice: Option<BetaToolChoice>,
116 #[serde(default, skip_serializing_if = "Option::is_none")]
118 pub tools: Option<Vec<BetaToolUnion>>,
119 #[serde(default, skip_serializing_if = "Option::is_none")]
121 pub top_k: Option<u64>,
122 #[serde(default, skip_serializing_if = "Option::is_none")]
124 pub top_p: Option<f64>,
125}
126
127impl Default for RequestBody {
128 fn default() -> Self {
129 Self {
130 max_tokens: 0,
131 messages: Vec::new(),
132 model: Model::Custom(String::new()),
133 container: None,
134 context_management: None,
135 inference_geo: None,
136 mcp_servers: None,
137 metadata: None,
138 cache_control: None,
139 output_config: None,
140 service_tier: None,
141 speed: None,
142 stop_sequences: None,
143 stream: None,
144 system: None,
145 temperature: None,
146 thinking: None,
147 tool_choice: None,
148 tools: None,
149 top_k: None,
150 top_p: None,
151 }
152 }
153}