async_openai/types/
file.rs1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::error::OpenAIError;
5
6use super::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}
21
22#[derive(Debug, Default, Clone, PartialEq, Deserialize, Serialize)]
23pub enum FileExpiresAfterAnchor {
24 #[default]
25 #[serde(rename = "created_at")]
26 CreatedAt
27}
28
29#[derive(Debug, Default, Clone, PartialEq)]
30pub struct FileExpiresAfter {
31 pub anchor: FileExpiresAfterAnchor,
33
34 pub seconds: u32,
36}
37
38#[derive(Debug, Default, Clone, Builder, PartialEq)]
39#[builder(name = "CreateFileRequestArgs")]
40#[builder(pattern = "mutable")]
41#[builder(setter(into, strip_option), default)]
42#[builder(derive(Debug))]
43#[builder(build_fn(error = "OpenAIError"))]
44pub struct CreateFileRequest {
45 pub file: FileInput,
47
48 pub purpose: FilePurpose,
52
53 pub expires_after: Option<FileExpiresAfter>,
55}
56
57#[derive(Debug, Deserialize, Clone, PartialEq, Serialize)]
58pub struct ListFilesResponse {
59 pub object: String,
60 pub data: Vec<OpenAIFile>,
61}
62
63#[derive(Debug, Deserialize, Clone, PartialEq, Serialize)]
64pub struct DeleteFileResponse {
65 pub id: String,
66 pub object: String,
67 pub deleted: bool,
68}
69
70#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
71pub enum OpenAIFilePurpose {
72 #[serde(rename = "assistants")]
73 Assistants,
74 #[serde(rename = "assistants_output")]
75 AssistantsOutput,
76 #[serde(rename = "batch")]
77 Batch,
78 #[serde(rename = "batch_output")]
79 BatchOutput,
80 #[serde(rename = "fine-tune")]
81 FineTune,
82 #[serde(rename = "fine-tune-results")]
83 FineTuneResults,
84 #[serde(rename = "vision")]
85 Vision,
86}
87
88#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
90pub struct OpenAIFile {
91 pub id: String,
93 pub object: String,
95 pub bytes: u32,
97 pub created_at: u32,
99 pub expires_at: Option<u32>,
101 pub filename: String,
103 pub purpose: OpenAIFilePurpose,
105 #[deprecated]
107 pub status: Option<String>,
108 #[deprecated]
110 pub status_details: Option<String>, }