1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
4#[serde(rename_all = "snake_case")]
5pub enum FilePurpose {
6 #[default]
7 Assistants,
8 Batch,
9 FineTune,
10 Vision,
11}
12
13#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
14#[serde(deny_unknown_fields)]
15pub struct CreateFileRequest {
16 pub file: String,
18 pub purpose: FilePurpose,
19 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub filename: Option<String>,
21}
22
23#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
24pub struct FileObject {
25 pub id: String,
26 pub object: String,
27 pub bytes: u64,
28 pub created_at: u64,
29 pub filename: String,
30 pub purpose: String,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub status: Option<String>,
33}
34
35#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
36pub struct FileListResponse {
37 pub object: String,
38 pub data: Vec<FileObject>,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub has_more: Option<bool>,
41}
42
43#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
44#[serde(deny_unknown_fields)]
45pub struct FileListQuery {
46 #[serde(default, skip_serializing_if = "Option::is_none")]
47 pub purpose: Option<String>,
48 #[serde(default, skip_serializing_if = "Option::is_none")]
49 pub limit: Option<u32>,
50 #[serde(default, skip_serializing_if = "Option::is_none")]
51 pub after: Option<String>,
52}
53
54#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
55pub struct DeleteResponse {
56 pub id: String,
57 pub object: String,
58 pub deleted: bool,
59}