use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AlertProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub alert_display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub alert_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub compromised_entity: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub severity: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_time_utc: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub time_generated_utc: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vendor_name: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub remediation_steps: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_source: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub intent: Option<String>,
}
impl AlertProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
alert_display_name: Some("test-alert_display_name".into()),
alert_type: Some("test-alert_type".into()),
compromised_entity: Some("test-compromised_entity".into()),
description: Some("test-description".into()),
severity: Some("test-severity".into()),
status: Some("test-status".into()),
start_time_utc: Some("test-start_time_utc".into()),
time_generated_utc: Some("test-time_generated_utc".into()),
vendor_name: Some("test-vendor_name".into()),
remediation_steps: vec![],
system_source: Some("test-system_source".into()),
intent: Some("test-intent".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Alert {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<AlertProperties>,
}
impl Alert {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-alert".into()),
r#type: Some("test-type".into()),
properties: Some(AlertProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AlertListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Alert>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl AlertListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ScoreDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub max: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub current: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub percentage: Option<f64>,
}
impl ScoreDetails {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
max: Some(100),
..Default::default()
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecureScoreProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub score: Option<ScoreDetails>,
#[serde(skip_serializing_if = "Option::is_none")]
pub weight: Option<i64>,
}
impl SecureScoreProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
display_name: Some("test-display_name".into()),
score: Some(ScoreDetails::fixture()),
weight: Some(100),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecureScore {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<SecureScoreProperties>,
}
impl SecureScore {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-secure_score".into()),
r#type: Some("test-type".into()),
properties: Some(SecureScoreProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecureScoreListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<SecureScore>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SecureScoreListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AssessmentStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cause: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
impl AssessmentStatus {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
code: Some("test-code".into()),
cause: Some("test-cause".into()),
description: Some("test-description".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AssessmentProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<AssessmentStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub remediation_description: Option<String>,
}
impl AssessmentProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
display_name: Some("test-display_name".into()),
status: Some(AssessmentStatus::fixture()),
description: Some("test-description".into()),
remediation_description: Some("test-remediation_description".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Assessment {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<AssessmentProperties>,
}
impl Assessment {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-assessment".into()),
r#type: Some("test-type".into()),
properties: Some(AssessmentProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AssessmentListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Assessment>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl AssessmentListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}