1use serde::{Deserialize, Serialize};
2use validator::Validate;
3
4#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
6pub struct FileListResponse {
7    #[serde(skip_serializing_if = "Option::is_none")]
9    pub object: Option<String>,
10    #[serde(skip_serializing_if = "Option::is_none")]
12    pub data: Option<Vec<FileObject>>,
13    #[serde(skip_serializing_if = "Option::is_none")]
15    pub has_more: Option<bool>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
20pub struct FileObject {
21    #[serde(skip_serializing_if = "Option::is_none")]
23    pub id: Option<String>,
24    #[serde(skip_serializing_if = "Option::is_none")]
26    pub object: Option<String>,
27    #[serde(skip_serializing_if = "Option::is_none")]
29    pub bytes: Option<u64>,
30    #[serde(skip_serializing_if = "Option::is_none")]
32    pub created_at: Option<u64>,
33    #[serde(skip_serializing_if = "Option::is_none")]
35    pub filename: Option<String>,
36    #[serde(skip_serializing_if = "Option::is_none")]
38    pub purpose: Option<String>,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
43pub struct FileDeleteResponse {
44    #[serde(skip_serializing_if = "Option::is_none")]
46    pub id: Option<String>,
47    #[serde(skip_serializing_if = "Option::is_none")]
49    pub object: Option<String>,
50    #[serde(skip_serializing_if = "Option::is_none")]
52    pub deleted: Option<bool>,
53}