use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use crate::error::OpenAIError;
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct AdminApiKey {
pub object: String,
pub id: String,
pub name: String,
pub redacted_value: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
pub created_at: u64,
pub last_used_at: Option<u64>,
pub owner: AdminApiKeyOwner,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct AdminApiKeyOwner {
pub kind: String,
pub object: String,
pub id: String,
pub name: String,
pub created_at: u64,
pub role: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct ApiKeyList {
pub object: String,
pub data: Vec<AdminApiKey>,
pub has_more: bool,
pub first_id: Option<String>,
pub last_id: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Builder, Clone, PartialEq)]
#[builder(name = "CreateAdminApiKeyRequestArgs")]
#[builder(pattern = "mutable")]
#[builder(setter(into, strip_option))]
#[builder(derive(Debug))]
#[builder(build_fn(error = "OpenAIError"))]
pub struct CreateAdminApiKeyRequest {
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct AdminApiKeyDeleteResponse {
pub object: String,
pub id: String,
pub deleted: bool,
}