Skip to main content

liter_llm/types/
files.rs

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    /// Base64-encoded file data.
17    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}