use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum PackMode {
#[default]
External,
Operator,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ContentRedaction {
Abstracted,
Full,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum RawEventPayloadPolicy {
Excluded,
OperatorOptIn,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Sensitivity {
Public,
Internal,
Personal,
Secret,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct RedactionPolicy {
pub policy_id: String,
pub policy_version: u16,
pub content: ContentRedaction,
pub raw_event_payloads: RawEventPayloadPolicy,
}
impl RedactionPolicy {
#[must_use]
pub fn external_default() -> Self {
Self {
policy_id: "context_pack.external.redacted_abstracted".to_string(),
policy_version: 1,
content: ContentRedaction::Abstracted,
raw_event_payloads: RawEventPayloadPolicy::Excluded,
}
}
#[must_use]
pub fn operator_with_raw_payload_opt_in() -> Self {
Self {
policy_id: "context_pack.operator.raw_payload_opt_in".to_string(),
policy_version: 1,
content: ContentRedaction::Full,
raw_event_payloads: RawEventPayloadPolicy::OperatorOptIn,
}
}
}
impl Default for RedactionPolicy {
fn default() -> Self {
Self::external_default()
}
}