gproxy_protocol/claude/count_tokens/
request.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::claude::count_tokens::types::{
6 AnthropicBeta, AnthropicVersion, BetaCacheControlEphemeral, BetaContextManagementConfig,
7 BetaMessageParam, BetaOutputConfig, BetaRequestMcpServerUrlDefinition, BetaSystemPrompt,
8 BetaThinkingConfigParam, BetaToolChoice, BetaToolUnion, HttpMethod, Model,
9};
10
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
13pub struct ClaudeCountTokensRequest {
14 pub method: HttpMethod,
16 pub path: PathParameters,
18 pub query: QueryParameters,
20 pub headers: RequestHeaders,
22 pub body: RequestBody,
24}
25
26impl Default for ClaudeCountTokensRequest {
27 fn default() -> Self {
28 Self {
29 method: HttpMethod::Post,
30 path: PathParameters::default(),
31 query: QueryParameters::default(),
32 headers: RequestHeaders::default(),
33 body: RequestBody::default(),
34 }
35 }
36}
37
38#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
40pub struct PathParameters {}
41
42#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
44pub struct QueryParameters {}
45
46#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
47pub struct RequestHeaders {
48 #[serde(rename = "anthropic-version")]
50 pub anthropic_version: AnthropicVersion,
51 #[serde(
53 rename = "anthropic-beta",
54 default,
55 skip_serializing_if = "Option::is_none"
56 )]
57 pub anthropic_beta: Option<Vec<AnthropicBeta>>,
58 #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
59 pub extra: BTreeMap<String, String>,
60}
61
62#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
63pub struct RequestBody {
64 pub messages: Vec<BetaMessageParam>,
66 pub model: Model,
68 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub context_management: Option<BetaContextManagementConfig>,
71 #[serde(default, skip_serializing_if = "Option::is_none")]
73 pub mcp_servers: Option<Vec<BetaRequestMcpServerUrlDefinition>>,
74 #[serde(default, skip_serializing_if = "Option::is_none")]
76 pub cache_control: Option<BetaCacheControlEphemeral>,
77 #[serde(default, skip_serializing_if = "Option::is_none")]
79 pub output_config: Option<BetaOutputConfig>,
80 #[serde(default, skip_serializing_if = "Option::is_none")]
82 pub speed: Option<String>,
83 #[serde(default, skip_serializing_if = "Option::is_none")]
85 pub system: Option<BetaSystemPrompt>,
86 #[serde(default, skip_serializing_if = "Option::is_none")]
88 pub thinking: Option<BetaThinkingConfigParam>,
89 #[serde(default, skip_serializing_if = "Option::is_none")]
91 pub tool_choice: Option<BetaToolChoice>,
92 #[serde(default, skip_serializing_if = "Option::is_none")]
94 pub tools: Option<Vec<BetaToolUnion>>,
95}
96
97impl Default for RequestBody {
98 fn default() -> Self {
99 Self {
100 messages: Vec::new(),
101 model: Model::Custom(String::new()),
102 context_management: None,
103 mcp_servers: None,
104 cache_control: None,
105 output_config: None,
106 speed: None,
107 system: None,
108 thinking: None,
109 tool_choice: None,
110 tools: None,
111 }
112 }
113}