Skip to main content

gproxy_protocol/claude/file_list/
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 "List Files" endpoint.
8///
9/// `GET /v1/files`
10#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
11pub struct ClaudeFileListRequest {
12    pub method: HttpMethod,
13    pub path: PathParameters,
14    pub query: QueryParameters,
15    pub headers: RequestHeaders,
16    pub body: RequestBody,
17}
18
19impl Default for ClaudeFileListRequest {
20    fn default() -> Self {
21        Self {
22            method: HttpMethod::Get,
23            path: PathParameters::default(),
24            query: QueryParameters::default(),
25            headers: RequestHeaders::default(),
26            body: RequestBody::default(),
27        }
28    }
29}
30
31#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
32pub struct PathParameters {}
33
34#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
35pub struct QueryParameters {
36    /// Pagination cursor: return records after this file id.
37    #[serde(default, skip_serializing_if = "Option::is_none")]
38    pub after_id: Option<String>,
39    /// Pagination cursor: return records before this file id.
40    #[serde(default, skip_serializing_if = "Option::is_none")]
41    pub before_id: Option<String>,
42    /// Number of items per page (1..=1000, default 20).
43    #[serde(default, skip_serializing_if = "Option::is_none")]
44    pub limit: Option<u16>,
45}
46
47#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
48pub struct RequestHeaders {
49    #[serde(rename = "anthropic-version")]
50    pub anthropic_version: AnthropicVersion,
51    #[serde(
52        rename = "anthropic-beta",
53        default,
54        skip_serializing_if = "Option::is_none"
55    )]
56    pub anthropic_beta: Option<Vec<AnthropicBeta>>,
57    #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
58    pub extra: BTreeMap<String, String>,
59}
60
61/// List files request has no JSON body.
62#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
63pub struct RequestBody {}