assurance_runtime/
profile_p4_regulated.rs1use 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}