use serde::{Deserialize, Serialize};
use crate::DataTenantId;
use crate::auth::{PrincipalId, SecretBearer};
use crate::ids::TenantSlug;
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct CreateTenantRequest {
pub slug: TenantSlug,
pub display_name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
pub struct ProvisionedTenant {
pub id: DataTenantId,
pub slug: TenantSlug,
pub display_name: String,
pub status: String,
}
#[derive(Debug, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
pub struct ProvisionedTenantAdmin {
pub principal_id: PrincipalId,
#[schemars(with = "String")]
pub credential: SecretBearer,
}
#[derive(Debug, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
pub struct CreateTenantResponse {
pub tenant: ProvisionedTenant,
pub admin: ProvisionedTenantAdmin,
}
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct RecoverTenantAdminRequest {
pub tenant_id: DataTenantId,
}
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
pub struct TenantListResponse {
pub tenants: Vec<ProvisionedTenant>,
}
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct SetTenantStatusRequest {
pub status: String,
}