use serde::{self, Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ACLToken {
#[serde(rename = "AccessorID")]
pub accessor_id: String,
#[serde(rename = "SecretID")]
pub secret_id: String,
pub description: String,
#[serde(default)]
pub policies: Vec<ACLTokenPolicyLink>,
#[serde(default)]
pub local: bool,
pub create_time: String,
pub hash: String,
pub create_index: u64,
pub modify_index: i64,
}
#[derive(Debug, Serialize, Deserialize, Default, bon::Builder)]
#[serde(rename_all = "PascalCase")]
pub struct ACLTokenPolicyLink {
#[serde(rename = "ID")]
pub id: Option<String>,
pub name: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Default, bon::Builder)]
#[serde(rename_all = "PascalCase")]
pub struct CreateACLTokenPayload {
#[serde(rename = "AccessorID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub accessor_id: Option<String>,
#[serde(rename = "SecretID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub secret_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub policies: Vec<ACLTokenPolicyLink>,
#[serde(default)]
#[builder(default)]
pub local: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hash: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiration_time: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ACLPolicy {
#[serde(rename = "ID")]
pub id: String,
pub name: String,
pub description: String,
pub hash: String,
pub create_index: u32,
pub datacenters: Option<Vec<String>>,
pub modify_index: u32,
}
#[derive(Debug, Serialize, Default, bon::Builder)]
#[serde(rename_all = "PascalCase")]
pub struct CreateACLPolicyRequest {
pub name: String,
pub description: Option<String>,
pub rules: Option<String>,
}