runx_contracts/
redaction.rs1use serde::{Deserialize, Serialize};
3
4use crate::Reference;
5use crate::schema::{IsoDateTime, NonEmptyString, RunxSchema};
6
7pub const REDACTION_SCHEMA: &str = "runx.redaction.v1";
8
9#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, RunxSchema)]
10pub enum RedactionSchema {
11 #[serde(rename = "runx.redaction.v1")]
12 V1,
13}
14
15#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, RunxSchema)]
16#[serde(rename_all = "snake_case")]
17pub enum HashAlgorithm {
18 Sha256,
19}
20
21#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, RunxSchema)]
22#[serde(deny_unknown_fields)]
23pub struct HashCommitment {
24 pub algorithm: HashAlgorithm,
25 pub value: NonEmptyString,
26 pub canonicalization: NonEmptyString,
27}
28
29#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, RunxSchema)]
30#[serde(deny_unknown_fields)]
31#[runx_schema(id = "runx.redaction.v1")]
32pub struct Redaction {
33 pub schema: RedactionSchema,
34 pub redaction_id: NonEmptyString,
35 pub policy_ref: Reference,
36 #[serde(default)]
37 pub redacted_fields: Vec<NonEmptyString>,
38 #[serde(default)]
39 pub hash_commitments: Vec<HashCommitment>,
40 pub canonicalization: NonEmptyString,
41 pub performed_by_ref: Reference,
42 pub performed_at: IsoDateTime,
43}