novel_openai/spec/files/
file.rs1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::error::OpenAIError;
5use crate::spec::InputSource;
6
7#[derive(Debug, Default, Clone, PartialEq)]
8pub struct FileInput {
9 pub source: InputSource,
10}
11
12#[derive(Debug, Default, Clone, PartialEq)]
13pub enum FilePurpose {
14 Assistants,
15 Batch,
16 #[default]
17 FineTune,
18 Vision,
19 UserData,
20 Evals,
21}
22
23#[derive(Debug, Default, Clone, PartialEq, Deserialize, Serialize)]
24pub enum FileExpirationAfterAnchor {
25 #[default]
26 #[serde(rename = "created_at")]
27 CreatedAt,
28}
29
30#[derive(Debug, Default, Deserialize, Serialize, Clone, PartialEq)]
31pub struct FileExpirationAfter {
32 pub anchor: FileExpirationAfterAnchor,
35
36 pub seconds: u32,
39}
40
41#[derive(Debug, Default, Clone, Builder, PartialEq)]
42#[builder(name = "CreateFileRequestArgs")]
43#[builder(pattern = "mutable")]
44#[builder(setter(into, strip_option), default)]
45#[builder(derive(Debug))]
46#[builder(build_fn(error = "OpenAIError"))]
47pub struct CreateFileRequest {
48 pub file: FileInput,
50
51 pub purpose: FilePurpose,
55
56 pub expires_after: Option<FileExpirationAfter>,
59}
60
61#[derive(Debug, Deserialize, Clone, PartialEq, Serialize)]
62pub struct ListFilesResponse {
63 pub object: String,
64 pub data: Vec<OpenAIFile>,
65 pub first_id: Option<String>,
66 pub last_id: Option<String>,
67 pub has_more: bool,
68}
69
70#[derive(Debug, Deserialize, Clone, PartialEq, Serialize)]
71pub struct DeleteFileResponse {
72 pub id: String,
73 pub object: String,
74 pub deleted: bool,
75}
76
77#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
78pub enum OpenAIFilePurpose {
79 #[serde(rename = "assistants")]
80 Assistants,
81 #[serde(rename = "assistants_output")]
82 AssistantsOutput,
83 #[serde(rename = "batch")]
84 Batch,
85 #[serde(rename = "batch_output")]
86 BatchOutput,
87 #[serde(rename = "fine-tune")]
88 FineTune,
89 #[serde(rename = "fine-tune-results")]
90 FineTuneResults,
91 #[serde(rename = "vision")]
92 Vision,
93 #[serde(rename = "user_data")]
94 UserData,
95}
96
97#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
99pub struct OpenAIFile {
100 pub id: String,
102 pub object: String,
104 pub bytes: u32,
106 pub created_at: u64,
108 pub expires_at: Option<u64>,
110 pub filename: String,
112 pub purpose: OpenAIFilePurpose,
115 #[deprecated]
118 pub status: Option<String>,
119 #[deprecated]
122 pub status_details: Option<String>, }