use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct FileCreateParams {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub file: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub file_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct FileCreateResponse {
pub id: String,
pub bytes: i64,
pub container_id: String,
pub created_at: i64,
pub object: String,
pub path: String,
pub source: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum FileListParamsOrder {
#[serde(rename = "asc")]
Asc,
#[serde(rename = "desc")]
Desc,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct FileListParams {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub after: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub order: Option<FileListParamsOrder>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct FileListResponse {
pub id: String,
pub bytes: i64,
pub container_id: String,
pub created_at: i64,
pub object: String,
pub path: String,
pub source: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct FileRetrieveResponse {
pub id: String,
pub bytes: i64,
pub container_id: String,
pub created_at: i64,
pub object: String,
pub path: String,
pub source: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum ContainerCreateParamsMemoryLimit {
#[serde(rename = "1g")]
V1g,
#[serde(rename = "4g")]
V4g,
#[serde(rename = "16g")]
V16g,
#[serde(rename = "64g")]
V64g,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ContainerCreateParams {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub expires_after: Option<ExpiresAfter>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub file_ids: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub memory_limit: Option<ContainerCreateParamsMemoryLimit>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub network_policy: Option<NetworkPolicy>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub skills: Option<Vec<Skill>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ExpiresAfter {
pub anchor: String,
pub minutes: i64,
}
pub type NetworkPolicy = serde_json::Value;
pub type Skill = serde_json::Value;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum NetworkPolicyType {
#[serde(rename = "allowlist")]
Allowlist,
#[serde(rename = "disabled")]
Disabled,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum ContainerCreateResponseMemoryLimit {
#[serde(rename = "1g")]
V1g,
#[serde(rename = "4g")]
V4g,
#[serde(rename = "16g")]
V16g,
#[serde(rename = "64g")]
V64g,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ContainerCreateResponse {
pub id: String,
pub created_at: i64,
pub name: String,
pub object: String,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub expires_after: Option<ExpiresAfter>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub last_active_at: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub memory_limit: Option<ContainerCreateResponseMemoryLimit>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub network_policy: Option<NetworkPolicy>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum ContainerListParamsOrder {
#[serde(rename = "asc")]
Asc,
#[serde(rename = "desc")]
Desc,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ContainerListParams {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub after: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub limit: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub order: Option<ContainerListParamsOrder>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum ContainerListResponseMemoryLimit {
#[serde(rename = "1g")]
V1g,
#[serde(rename = "4g")]
V4g,
#[serde(rename = "16g")]
V16g,
#[serde(rename = "64g")]
V64g,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ContainerListResponse {
pub id: String,
pub created_at: i64,
pub name: String,
pub object: String,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub expires_after: Option<ExpiresAfter>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub last_active_at: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub memory_limit: Option<ContainerListResponseMemoryLimit>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub network_policy: Option<NetworkPolicy>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum ContainerRetrieveResponseMemoryLimit {
#[serde(rename = "1g")]
V1g,
#[serde(rename = "4g")]
V4g,
#[serde(rename = "16g")]
V16g,
#[serde(rename = "64g")]
V64g,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "structured", derive(schemars::JsonSchema))]
pub struct ContainerRetrieveResponse {
pub id: String,
pub created_at: i64,
pub name: String,
pub object: String,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub expires_after: Option<ExpiresAfter>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub last_active_at: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub memory_limit: Option<ContainerRetrieveResponseMemoryLimit>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub network_policy: Option<NetworkPolicy>,
}