use std::collections::HashMap;
use super::responses::{
GenerateSSHCredsResponse, ListRolesByIPResponse, ListRolesResponse,
ListZeroAddressRolesResponse, ReadPublicKeyResponse, ReadRoleResponse, SignSSHKeyResponse,
SubmitCAInfoResponse, VerifySSHOTPResponse,
};
use rustify_derive::Endpoint;
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/roles/{self.name}",
method = "POST",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct SetRoleRequest {
#[endpoint(skip)]
pub mount: String,
pub name: String,
pub key_type: String,
pub algorithm_signer: Option<String>,
pub allow_bare_domains: Option<bool>,
pub allow_host_certificates: Option<bool>,
pub allow_subdomains: Option<bool>,
pub allow_user_certificates: Option<bool>,
pub allow_user_key_ids: Option<bool>,
pub allowed_user_key_lengths: Option<HashMap<String, u64>>,
pub allowed_critical_options: Option<HashMap<String, String>>,
pub allowed_domains: Option<String>,
pub allowed_extensions: Option<String>,
pub allowed_users: Option<String>,
pub allowed_users_template: Option<bool>,
pub admin_user: Option<String>,
pub cidr_list: Option<String>,
pub efault_critical_options: Option<HashMap<String, String>>,
pub default_user: Option<String>,
pub exclude_cidr_list: Option<String>,
pub install_script: Option<String>,
pub key: Option<String>,
pub key_bits: Option<u64>,
pub key_id_format: Option<String>,
pub key_option_specs: Option<String>,
pub max_ttl: Option<String>,
pub port: Option<u64>,
pub ttl: Option<String>,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/roles/{self.name}",
response = "ReadRoleResponse",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct ReadRoleRequest {
#[endpoint(skip)]
pub mount: String,
#[endpoint(skip)]
pub name: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/roles",
method = "LIST",
response = "ListRolesResponse",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct ListRolesRequest {
#[endpoint(skip)]
pub mount: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/roles/{self.name}",
method = "DELETE",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct DeleteRoleRequest {
#[endpoint(skip)]
pub mount: String,
#[endpoint(skip)]
pub name: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/config/zeroaddress",
response = "ListZeroAddressRolesResponse",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct ListZeroAddressRolesRequest {
#[endpoint(skip)]
pub mount: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/config/zeroaddress",
method = "POST",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct ConfigureZeroAddressRolesRequest {
#[endpoint(skip)]
pub mount: String,
pub roles: Vec<String>,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/roles/zeroaddress",
method = "DELETE",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct DeleteZeroAddressRolesRequest {
#[endpoint(skip)]
pub mount: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/creds/{self.name}",
method = "POST",
response = "GenerateSSHCredsResponse",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct GenerateSSHCredsRequest {
#[endpoint(skip)]
pub mount: String,
#[endpoint(skip)]
pub name: String,
pub ip: String,
pub username: Option<String>,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/lookup",
method = "POST",
response = "ListRolesByIPResponse",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct ListRolesByIPRequest {
#[endpoint(skip)]
pub mount: String,
pub ip: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/verify",
method = "POST",
response = "VerifySSHOTPResponse",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct VerifySSHOTPRequest {
#[endpoint(skip)]
pub mount: String,
pub otp: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/config/ca",
method = "POST",
response = "SubmitCAInfoResponse",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct SubmitCAInfoRequest {
#[endpoint(skip)]
pub mount: String,
pub generate_signing_key: Option<bool>,
pub private_key: Option<String>,
pub public_key: Option<String>,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(path = "{self.mount}/config/ca", method = "DELETE", builder = "true")]
#[builder(setter(into, strip_option), default)]
pub struct DeleteCAInfoRequest {
#[endpoint(skip)]
pub mount: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/config/ca",
response = "ReadPublicKeyResponse",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct ReadPublicKeyRequest {
#[endpoint(skip)]
pub mount: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "{self.mount}/sign/{self.name}",
method = "POST",
response = "SignSSHKeyResponse",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct SignSSHKeyRequest {
#[endpoint(skip)]
pub mount: String,
#[endpoint(skip)]
pub name: String,
pub cert_type: Option<String>,
pub critical_options: Option<HashMap<String, String>>,
pub extensions: Option<HashMap<String, String>>,
pub key_id: Option<String>,
pub public_key: String,
pub ttl: Option<String>,
pub valid_principals: Option<String>,
}