zai_rs/file/
response.rs

1use serde::{Deserialize, Serialize};
2use validator::Validate;
3
4/// Response for files listing
5#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
6pub struct FileListResponse {
7    /// Response type: expected "list"
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub object: Option<String>,
10    /// File entries
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub data: Option<Vec<FileObject>>,
13    /// Whether there are more results
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub has_more: Option<bool>,
16}
17
18/// File metadata object (as returned by list/upload APIs)
19#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
20pub struct FileObject {
21    /// Unique file identifier
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub id: Option<String>,
24    /// Object type: expected "file"
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub object: Option<String>,
27    /// File size in bytes
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub bytes: Option<u64>,
30    /// UNIX timestamp of creation
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub created_at: Option<u64>,
33    /// Original filename
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub filename: Option<String>,
36    /// Purpose string (e.g., batch, file-extract, ...)
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub purpose: Option<String>,
39}
40
41/// Response for file deletion (DELETE /files/{file_id})
42#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
43pub struct FileDeleteResponse {
44    /// Deleted resource id
45    #[serde(skip_serializing_if = "Option::is_none")]
46    pub id: Option<String>,
47    /// Resource type: expected "file"
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub object: Option<String>,
50    /// Whether deletion succeeded
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub deleted: Option<bool>,
53}