#![allow(unused_imports, non_camel_case_types, non_snake_case, clippy::all)]
use serde::{Deserialize, Serialize};
use super::*;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Policy {
pub policy_version: Policy_PolicyVersion,
pub trust_domain: TrustDomain,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub engine_hint: Option<Policy_EngineHint>,
pub rules: Vec<Rule>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub negative_capabilities: Option<Vec<NegativeCapability>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub quorum_defaults: Option<Policy_QuorumDefaults>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub continuous_reevaluation: Option<Policy_ContinuousReevaluation>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Policy_ContinuousReevaluation {
pub triggers: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum Policy_EngineHint {
#[serde(rename = "cedar")]
Cedar,
#[serde(rename = "rego")]
Rego,
#[serde(rename = "custom")]
Custom,
#[serde(rename = "native")]
Native,
#[serde(rename = "none")]
None,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum Policy_PolicyVersion {
#[serde(rename = "1")]
V1,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Policy_QuorumDefaults {
pub min_approvers: i64,
pub of: Vec<ActorId>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Rule {
pub id: String,
pub effect: Rule_Effect,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub action: Option<ActionName>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub action_pattern: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub subject_pattern: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub target_patterns: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub risk_at_most: Option<RiskClass>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub proof_required: Option<ProofLevel>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub approval: Option<ApprovalRequirement>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub constraints: Option<Vec<Constraint>>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub reason: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum Rule_Effect {
#[serde(rename = "allow")]
Allow,
#[serde(rename = "deny")]
Deny,
#[serde(rename = "escalate")]
Escalate,
#[serde(rename = "log_only")]
LogOnly,
}