Skip to main content

gproxy_protocol/claude/model_get/
request.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::claude::types::{AnthropicBeta, AnthropicVersion, HttpMethod};
6
7/// Request descriptor for Claude "Get a Model" endpoint.
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9pub struct ClaudeModelGetRequest {
10    /// HTTP method.
11    pub method: HttpMethod,
12    /// Path parameters.
13    pub path: PathParameters,
14    /// Query parameters.
15    pub query: QueryParameters,
16    /// Request headers.
17    pub headers: RequestHeaders,
18    /// Request body (currently empty by spec).
19    pub body: RequestBody,
20}
21impl Default for ClaudeModelGetRequest {
22    fn default() -> Self {
23        Self {
24            method: HttpMethod::Get,
25            path: PathParameters::default(),
26            query: QueryParameters::default(),
27            headers: RequestHeaders::default(),
28            body: RequestBody::default(),
29        }
30    }
31}
32
33#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
34pub struct PathParameters {
35    /// Model identifier or alias.
36    pub model_id: String,
37}
38
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
40pub struct QueryParameters {}
41
42#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
43pub struct RequestHeaders {
44    /// Anthropic API version.
45    #[serde(rename = "anthropic-version")]
46    pub anthropic_version: AnthropicVersion,
47    /// Optional beta version(s).
48    #[serde(
49        rename = "anthropic-beta",
50        default,
51        skip_serializing_if = "Option::is_none"
52    )]
53    pub anthropic_beta: Option<Vec<AnthropicBeta>>,
54    #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
55    pub extra: BTreeMap<String, String>,
56}
57
58/// Get model request has no JSON body.
59#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
60pub struct RequestBody {}