cortex_context/
redaction.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
7#[serde(rename_all = "snake_case")]
8pub enum PackMode {
9 #[default]
11 External,
12 Operator,
14}
15
16#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
18#[serde(rename_all = "snake_case")]
19pub enum ContentRedaction {
20 Abstracted,
22 Full,
24}
25
26#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
28#[serde(rename_all = "snake_case")]
29pub enum RawEventPayloadPolicy {
30 Excluded,
32 OperatorOptIn,
34}
35
36#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
38#[serde(rename_all = "snake_case")]
39pub enum Sensitivity {
40 Public,
42 Internal,
44 Personal,
46 Secret,
48}
49
50#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
52pub struct RedactionPolicy {
53 pub policy_id: String,
55 pub policy_version: u16,
57 pub content: ContentRedaction,
59 pub raw_event_payloads: RawEventPayloadPolicy,
61}
62
63impl RedactionPolicy {
64 #[must_use]
66 pub fn external_default() -> Self {
67 Self {
68 policy_id: "context_pack.external.redacted_abstracted".to_string(),
69 policy_version: 1,
70 content: ContentRedaction::Abstracted,
71 raw_event_payloads: RawEventPayloadPolicy::Excluded,
72 }
73 }
74
75 #[must_use]
77 pub fn operator_with_raw_payload_opt_in() -> Self {
78 Self {
79 policy_id: "context_pack.operator.raw_payload_opt_in".to_string(),
80 policy_version: 1,
81 content: ContentRedaction::Full,
82 raw_event_payloads: RawEventPayloadPolicy::OperatorOptIn,
83 }
84 }
85}
86
87impl Default for RedactionPolicy {
88 fn default() -> Self {
89 Self::external_default()
90 }
91}