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