use indexmap::IndexMap;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, JsonSchema, Clone, Debug, PartialEq, Eq)]
pub struct CapabilitySshServerV1 {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub users: Option<Vec<SshUserV1>>,
#[serde(flatten)]
pub other: IndexMap<String, serde_json::Value>,
}
#[derive(Serialize, Deserialize, JsonSchema, PartialEq, Eq, Clone, Debug)]
pub struct SshUserV1 {
pub username: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub passwords: Option<Vec<PasswordV1>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authorized_keys: Option<Vec<String>>,
#[serde(flatten)]
pub other: IndexMap<String, serde_json::Value>,
}
#[derive(Serialize, Deserialize, JsonSchema, PartialEq, Eq, Clone, Debug)]
#[serde(rename_all = "snake_case", tag = "type")]
pub enum PasswordV1 {
Plain { password: String },
Bcrypt { hash: String },
}