use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use crate::auth::{PrincipalId, SecretBearer};
use crate::reference::CardRef;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct IssueKeyRequest {
pub card_ref: CardRef,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_in_seconds: Option<u32>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct IssueKeyResponse {
pub key_id: Uuid,
pub principal_id: PrincipalId,
pub key: SecretBearer,
pub prefix: String,
pub card_ref: CardRef,
pub created_at: DateTime<Utc>,
pub expires_at: DateTime<Utc>,
}