use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PrincipalIn {
pub id: String,
pub authority: String,
pub domains: Vec<String>,
pub policy_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceIn {
pub id: String,
#[serde(rename = "type")]
pub resource_type: Option<String>,
pub phase: Option<String>,
pub gates_passed: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ContextIn {
pub commitment_type: Option<String>,
pub amount: Option<i64>,
pub human_approval_present: Option<bool>,
pub required_gates_met: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DecideRequest {
pub principal: PrincipalIn,
pub resource: ResourceIn,
pub action: String,
pub context: Option<ContextIn>,
pub delegation_b64: Option<String>,
}