ephemeris_forge_github/api/model/
security.rs1use facet::Facet;
2
3use super::repository::AnalysisWire;
4use crate::{Language, QuerySuite, Reviewer, RunnerType, SetupState, Status, ThreatModel};
5
6#[derive(Clone, Debug, Default, Eq, Facet, PartialEq)]
10#[facet(proxy = AnalysisWire)]
11pub struct Analysis {
12 #[facet(default)]
14 pub advanced_security: Option<Status>,
15 #[facet(default)]
17 pub code_security: Option<Status>,
18 #[facet(default)]
20 pub secret_scanning: Option<Status>,
21 #[facet(default)]
23 pub secret_scanning_push_protection: Option<Status>,
24 #[facet(default)]
26 pub secret_scanning_ai_detection: Option<Status>,
27 #[facet(default)]
29 pub secret_scanning_non_provider_patterns: Option<Status>,
30 #[facet(default)]
32 pub secret_scanning_delegated_alert_dismissal: Option<Status>,
33 #[facet(default)]
35 pub secret_scanning_delegated_bypass: Option<Status>,
36 #[facet(default)]
38 pub secret_scanning_delegated_bypass_reviewers: Vec<Reviewer>,
39}
40
41#[derive(Clone, Debug, Eq, Facet, PartialEq)]
43pub struct CodeScanning {
44 pub state: SetupState,
46 #[facet(default)]
48 pub languages: Vec<Language>,
49 #[facet(default)]
51 pub runner_type: Option<RunnerType>,
52 #[facet(default)]
54 pub runner_label: Option<String>,
55 #[facet(default)]
57 pub query_suite: Option<QuerySuite>,
58 #[facet(default)]
60 pub threat_model: Option<ThreatModel>,
61}
62
63#[derive(Clone, Debug, Default, Eq, PartialEq)]
67pub struct Security {
68 pub vulnerability_alerts: Option<bool>,
70 pub automated_security_fixes: Option<bool>,
72 pub private_vulnerability_reporting: Option<bool>,
74 pub code_scanning_default_setup: Option<CodeScanning>,
76}
77
78#[derive(Facet)]
80pub(crate) struct EnabledResponse {
81 pub(crate) enabled: bool,
82}