use serde::Serialize;
pub struct CreateKeyRequest {
pub tenant_id: String,
pub name: String,
pub scopes: Vec<String>,
pub expires_at: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct ApiKeyCreated {
pub id: String,
pub raw_token: String,
pub name: String,
pub scopes: Vec<String>,
pub tenant_id: String,
pub expires_at: Option<String>,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct ApiKeyMeta {
pub id: String,
pub tenant_id: String,
pub name: String,
pub scopes: Vec<String>,
pub expires_at: Option<String>,
pub last_used_at: Option<String>,
pub created_at: String,
}
#[derive(Clone)]
pub struct ApiKeyRecord {
pub id: String,
pub key_hash: String,
pub tenant_id: String,
pub name: String,
pub scopes: Vec<String>,
pub expires_at: Option<String>,
pub last_used_at: Option<String>,
pub created_at: String,
pub revoked_at: Option<String>,
}
impl ApiKeyRecord {
pub fn into_meta(self) -> ApiKeyMeta {
ApiKeyMeta {
id: self.id,
tenant_id: self.tenant_id,
name: self.name,
scopes: self.scopes,
expires_at: self.expires_at,
last_used_at: self.last_used_at,
created_at: self.created_at,
}
}
}