Skip to main content

assurance_runtime/
profile_p4_regulated.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
5pub struct RequirementControlMappingEntryV1 {
6    pub requirement: String,
7    pub control: String,
8    pub evidence_family: String,
9}
10
11#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
12pub struct EvidenceClassRequirementV1 {
13    pub evidence_class: String,
14    pub minimum_family: String,
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
18pub struct RegulatoryRegimeProfileV1 {
19    pub schema_version: String,
20    pub regulatory_regime_profile_id: String,
21    pub regime_name: String,
22    pub regime_version: String,
23    #[serde(default, skip_serializing_if = "Vec::is_empty")]
24    pub covered_products: Vec<String>,
25    #[serde(default, skip_serializing_if = "Vec::is_empty")]
26    pub mandatory_control_families: Vec<String>,
27    pub audit_cycle_days: i64,
28}
29
30#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
31pub struct RequirementControlMapV1 {
32    pub schema_version: String,
33    pub requirement_control_map_id: String,
34    pub regulatory_regime_profile_id: String,
35    #[serde(default, skip_serializing_if = "Vec::is_empty")]
36    pub mappings: Vec<RequirementControlMappingEntryV1>,
37    pub gap_classification_default: String,
38    pub owner_ref: String,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
42pub struct EvidenceCollectionPlanV1 {
43    pub schema_version: String,
44    pub evidence_collection_plan_id: String,
45    pub regulatory_regime_profile_id: String,
46    #[serde(default, skip_serializing_if = "Vec::is_empty")]
47    pub required_evidence_classes: Vec<EvidenceClassRequirementV1>,
48    pub collection_cadence: String,
49    pub retention_class: String,
50    pub owner_ref: String,
51}
52
53#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
54pub struct RecertificationScheduleV1 {
55    pub schema_version: String,
56    pub recertification_schedule_id: String,
57    pub regulatory_regime_profile_id: String,
58    pub review_interval_days: i64,
59    #[serde(default, skip_serializing_if = "Vec::is_empty")]
60    pub trigger_classes: Vec<String>,
61    pub grace_window_days: i64,
62    pub blocked_state_on_expiry: String,
63}