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,
58
59 pub expires_after: Option<FileExpirationAfter>,
61}
62
63#[derive(Debug, Deserialize, Clone, PartialEq, Serialize)]
64pub struct ListFilesResponse {
65 pub object: String,
66 pub data: Vec<OpenAIFile>,
67 pub first_id: Option<String>,
68 pub last_id: Option<String>,
69 pub has_more: bool,
70}
71
72#[derive(Debug, Deserialize, Clone, PartialEq, Serialize)]
73pub struct DeleteFileResponse {
74 pub id: String,
75 pub object: String,
76 pub deleted: bool,
77}
78
79#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
80pub enum OpenAIFilePurpose {
81 #[serde(rename = "assistants")]
82 Assistants,
83 #[serde(rename = "assistants_output")]
84 AssistantsOutput,
85 #[serde(rename = "batch")]
86 Batch,
87 #[serde(rename = "batch_output")]
88 BatchOutput,
89 #[serde(rename = "fine-tune")]
90 FineTune,
91 #[serde(rename = "fine-tune-results")]
92 FineTuneResults,
93 #[serde(rename = "vision")]
94 Vision,
95 #[serde(rename = "user_data")]
96 UserData,
97}
98
99#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
101pub struct OpenAIFile {
102 pub id: String,
104 pub object: String,
106 pub bytes: u32,
108 pub created_at: u64,
110 pub expires_at: Option<u64>,
112 pub filename: String,
114 pub purpose: OpenAIFilePurpose,
116 #[deprecated]
118 pub status: Option<String>,
119 #[deprecated]
121 pub status_details: Option<String>, }