async_openai/types/containers/
container.rs1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::error::OpenAIError;
5
6use crate::types::InputSource;
7
8#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Default)]
9pub enum MemoryLimit {
10 #[default]
11 #[serde(rename = "1g")]
12 OneG,
13 #[serde(rename = "4g")]
14 FourG,
15 #[serde(rename = "16g")]
16 SixteenG,
17 #[serde(rename = "64g")]
18 SixtyFourG,
19}
20
21#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
22pub struct ContainerResource {
23 pub id: String,
25 pub object: String,
27 pub name: String,
29 pub created_at: u64,
31 pub status: String,
33 #[serde(skip_serializing_if = "Option::is_none")]
36 pub expires_after: Option<ContainerExpiresAfter>,
37 #[serde(skip_serializing_if = "Option::is_none")]
39 pub last_active_at: Option<u64>,
40 pub memory_limit: MemoryLimit,
42}
43
44#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
46pub struct ContainerExpiresAfter {
47 pub anchor: ContainerExpiresAfterAnchor,
49 pub minutes: u32,
50}
51
52#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
54#[serde(rename_all = "snake_case")]
55pub enum ContainerExpiresAfterAnchor {
56 LastActiveAt,
57}
58
59#[derive(Debug, Default, Clone, Builder, PartialEq, Serialize)]
62#[builder(name = "CreateContainerRequestArgs")]
63#[builder(pattern = "mutable")]
64#[builder(setter(into, strip_option), default)]
65#[builder(derive(Debug))]
66#[builder(build_fn(error = "OpenAIError"))]
67pub struct CreateContainerRequest {
68 pub name: String,
70 #[serde(skip_serializing_if = "Option::is_none")]
72 pub file_ids: Option<Vec<String>>,
73 #[serde(skip_serializing_if = "Option::is_none")]
75 pub expires_after: Option<ContainerExpiresAfter>,
76 #[serde(skip_serializing_if = "Option::is_none")]
78 pub memory_limit: Option<MemoryLimit>,
79}
80
81#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
83pub struct ContainerListResource {
84 pub object: String,
86 pub data: Vec<ContainerResource>,
88 pub first_id: Option<String>,
90 pub last_id: Option<String>,
92 pub has_more: bool,
94}
95
96#[derive(Debug, Deserialize, Clone, PartialEq, Serialize)]
98pub struct DeleteContainerResponse {
99 pub id: String,
100 pub object: String,
101 pub deleted: bool,
102}
103
104#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
108pub struct ContainerFileResource {
109 pub id: String,
111 pub object: String,
113 pub container_id: String,
115 pub created_at: u64,
117 pub bytes: u32,
119 pub path: String,
121 pub source: String,
123}
124
125#[derive(Debug, Default, Clone, PartialEq)]
128pub struct CreateContainerFileRequest {
129 pub file: Option<InputSource>,
131 pub file_id: Option<String>,
133}
134
135#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
137pub struct ContainerFileListResource {
138 pub object: String,
140 pub data: Vec<ContainerFileResource>,
142 pub first_id: Option<String>,
144 pub last_id: Option<String>,
146 pub has_more: bool,
148}
149
150#[derive(Debug, Deserialize, Clone, PartialEq, Serialize)]
152pub struct DeleteContainerFileResponse {
153 pub id: String,
154 pub object: String,
155 pub deleted: bool,
156}