#![doc = "generated by AutoRust"]
#![allow(non_camel_case_types)]
#![allow(unused_imports)]
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AadConnectivityState {
#[serde(rename = "connectivityState", default, skip_serializing_if = "Option::is_none")]
pub connectivity_state: Option<aad_connectivity_state::ConnectivityState>,
}
impl AadConnectivityState {
pub fn new() -> Self {
Self::default()
}
}
pub mod aad_connectivity_state {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ConnectivityState {
Discovered,
NotLicensed,
Connected,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AadExternalSecuritySolution {
#[serde(flatten)]
pub external_security_solution: ExternalSecuritySolution,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AadSolutionProperties>,
}
impl AadExternalSecuritySolution {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AadSolutionProperties {
#[serde(flatten)]
pub external_security_solution_properties: ExternalSecuritySolutionProperties,
#[serde(flatten)]
pub aad_connectivity_state: AadConnectivityState,
}
impl AadSolutionProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ActiveConnectionsNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl ActiveConnectionsNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AdaptiveNetworkHardening {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AdaptiveNetworkHardeningProperties>,
}
impl AdaptiveNetworkHardening {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AdaptiveNetworkHardeningEnforceRequest {
pub rules: Vec<Rule>,
#[serde(rename = "networkSecurityGroups")]
pub network_security_groups: Vec<String>,
}
impl AdaptiveNetworkHardeningEnforceRequest {
pub fn new(rules: Vec<Rule>, network_security_groups: Vec<String>) -> Self {
Self {
rules,
network_security_groups,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AdaptiveNetworkHardeningProperties {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub rules: Vec<Rule>,
#[serde(rename = "rulesCalculationTime", default, skip_serializing_if = "Option::is_none")]
pub rules_calculation_time: Option<String>,
#[serde(rename = "effectiveNetworkSecurityGroups", default, skip_serializing_if = "Vec::is_empty")]
pub effective_network_security_groups: Vec<EffectiveNetworkSecurityGroups>,
}
impl AdaptiveNetworkHardeningProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AdaptiveNetworkHardeningsList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<AdaptiveNetworkHardening>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl AdaptiveNetworkHardeningsList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AdditionalData {
#[serde(rename = "assessedResourceType")]
pub assessed_resource_type: additional_data::AssessedResourceType,
}
impl AdditionalData {
pub fn new(assessed_resource_type: additional_data::AssessedResourceType) -> Self {
Self { assessed_resource_type }
}
}
pub mod additional_data {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum AssessedResourceType {
SqlServerVulnerability,
ContainerRegistryVulnerability,
ServerVulnerability,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AdvancedThreatProtectionProperties {
#[serde(rename = "isEnabled", default, skip_serializing_if = "Option::is_none")]
pub is_enabled: Option<bool>,
}
impl AdvancedThreatProtectionProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AdvancedThreatProtectionSetting {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AdvancedThreatProtectionProperties>,
}
impl AdvancedThreatProtectionSetting {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Alert {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AlertProperties>,
}
impl Alert {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AlertConfidenceReason {
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
impl AlertConfidenceReason {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AlertEntity {
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
}
impl AlertEntity {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AlertExtendedProperties {}
impl AlertExtendedProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AlertList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Alert>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl AlertList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AlertProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(rename = "reportedTimeUtc", default, skip_serializing_if = "Option::is_none")]
pub reported_time_utc: Option<String>,
#[serde(rename = "vendorName", default, skip_serializing_if = "Option::is_none")]
pub vendor_name: Option<String>,
#[serde(rename = "alertName", default, skip_serializing_if = "Option::is_none")]
pub alert_name: Option<String>,
#[serde(rename = "alertDisplayName", default, skip_serializing_if = "Option::is_none")]
pub alert_display_name: Option<String>,
#[serde(rename = "detectedTimeUtc", default, skip_serializing_if = "Option::is_none")]
pub detected_time_utc: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "remediationSteps", default, skip_serializing_if = "Option::is_none")]
pub remediation_steps: Option<String>,
#[serde(rename = "actionTaken", default, skip_serializing_if = "Option::is_none")]
pub action_taken: Option<String>,
#[serde(rename = "reportedSeverity", default, skip_serializing_if = "Option::is_none")]
pub reported_severity: Option<alert_properties::ReportedSeverity>,
#[serde(rename = "compromisedEntity", default, skip_serializing_if = "Option::is_none")]
pub compromised_entity: Option<String>,
#[serde(rename = "associatedResource", default, skip_serializing_if = "Option::is_none")]
pub associated_resource: Option<String>,
#[serde(rename = "extendedProperties", default, skip_serializing_if = "Option::is_none")]
pub extended_properties: Option<AlertExtendedProperties>,
#[serde(rename = "systemSource", default, skip_serializing_if = "Option::is_none")]
pub system_source: Option<String>,
#[serde(rename = "canBeInvestigated", default, skip_serializing_if = "Option::is_none")]
pub can_be_investigated: Option<bool>,
#[serde(rename = "isIncident", default, skip_serializing_if = "Option::is_none")]
pub is_incident: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub entities: Vec<AlertEntity>,
#[serde(rename = "confidenceScore", default, skip_serializing_if = "Option::is_none")]
pub confidence_score: Option<f32>,
#[serde(rename = "confidenceReasons", default, skip_serializing_if = "Vec::is_empty")]
pub confidence_reasons: Vec<AlertConfidenceReason>,
#[serde(rename = "subscriptionId", default, skip_serializing_if = "Option::is_none")]
pub subscription_id: Option<String>,
#[serde(rename = "instanceId", default, skip_serializing_if = "Option::is_none")]
pub instance_id: Option<String>,
#[serde(rename = "workspaceArmId", default, skip_serializing_if = "Option::is_none")]
pub workspace_arm_id: Option<String>,
#[serde(rename = "correlationKey", default, skip_serializing_if = "Option::is_none")]
pub correlation_key: Option<String>,
}
impl AlertProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod alert_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ReportedSeverity {
Informational,
Low,
Medium,
High,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AlertsSuppressionRule {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AlertsSuppressionRuleProperties>,
}
impl AlertsSuppressionRule {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertsSuppressionRuleProperties {
#[serde(rename = "alertType")]
pub alert_type: String,
#[serde(rename = "lastModifiedUtc", default, skip_serializing_if = "Option::is_none")]
pub last_modified_utc: Option<String>,
#[serde(rename = "expirationDateUtc", default, skip_serializing_if = "Option::is_none")]
pub expiration_date_utc: Option<String>,
pub reason: String,
pub state: alerts_suppression_rule_properties::State,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub comment: Option<String>,
#[serde(rename = "suppressionAlertsScope", default, skip_serializing_if = "Option::is_none")]
pub suppression_alerts_scope: Option<SuppressionAlertsScope>,
}
impl AlertsSuppressionRuleProperties {
pub fn new(alert_type: String, reason: String, state: alerts_suppression_rule_properties::State) -> Self {
Self {
alert_type,
last_modified_utc: None,
expiration_date_utc: None,
reason,
state,
comment: None,
suppression_alerts_scope: None,
}
}
}
pub mod alerts_suppression_rule_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum State {
Enabled,
Disabled,
Expired,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlertsSuppressionRulesList {
pub value: Vec<AlertsSuppressionRule>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl AlertsSuppressionRulesList {
pub fn new(value: Vec<AlertsSuppressionRule>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AllowedConnectionsList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<AllowedConnectionsResource>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl AllowedConnectionsList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AllowedConnectionsResource {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub location: Location,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AllowedConnectionsResourceProperties>,
}
impl AllowedConnectionsResource {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AllowedConnectionsResourceProperties {
#[serde(rename = "calculatedDateTime", default, skip_serializing_if = "Option::is_none")]
pub calculated_date_time: Option<String>,
#[serde(rename = "connectableResources", default, skip_serializing_if = "Vec::is_empty")]
pub connectable_resources: Vec<ConnectableResource>,
}
impl AllowedConnectionsResourceProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AllowlistCustomAlertRule {
#[serde(flatten)]
pub list_custom_alert_rule: ListCustomAlertRule,
#[serde(rename = "allowlistValues")]
pub allowlist_values: Vec<String>,
}
impl AllowlistCustomAlertRule {
pub fn new(list_custom_alert_rule: ListCustomAlertRule, allowlist_values: Vec<String>) -> Self {
Self {
list_custom_alert_rule,
allowlist_values,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AmqpC2dMessagesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl AmqpC2dMessagesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AmqpC2dRejectedMessagesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl AmqpC2dRejectedMessagesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AmqpD2cMessagesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl AmqpD2cMessagesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AppWhitelistingGroup {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub location: Location,
pub properties: AppWhitelistingGroupData,
}
impl AppWhitelistingGroup {
pub fn new(properties: AppWhitelistingGroupData) -> Self {
Self {
resource: Resource::default(),
location: Location::default(),
properties,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AppWhitelistingGroupData {
#[serde(rename = "enforcementMode", default, skip_serializing_if = "Option::is_none")]
pub enforcement_mode: Option<EnforcementMode>,
#[serde(rename = "protectionMode", default, skip_serializing_if = "Option::is_none")]
pub protection_mode: Option<ProtectionMode>,
#[serde(rename = "configurationStatus", default, skip_serializing_if = "Option::is_none")]
pub configuration_status: Option<ConfigurationStatus>,
#[serde(rename = "recommendationStatus", default, skip_serializing_if = "Option::is_none")]
pub recommendation_status: Option<RecommendationStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issues: Option<AppWhitelistingIssuesSummaries>,
#[serde(rename = "sourceSystem", default, skip_serializing_if = "Option::is_none")]
pub source_system: Option<SourceSystem>,
#[serde(rename = "vmRecommendations", default, skip_serializing_if = "Option::is_none")]
pub vm_recommendations: Option<VmRecommendations>,
#[serde(rename = "pathRecommendations", default, skip_serializing_if = "Option::is_none")]
pub path_recommendations: Option<PathRecommendations>,
}
impl AppWhitelistingGroupData {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AppWhitelistingGroups {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<AppWhitelistingGroup>,
}
impl AppWhitelistingGroups {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum AppWhitelistingIssue {
ViolationsAudited,
ViolationsBlocked,
MsiAndScriptViolationsAudited,
MsiAndScriptViolationsBlocked,
ExecutableViolationsAudited,
RulesViolatedManually,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AppWhitelistingIssueSummary {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issue: Option<AppWhitelistingIssue>,
#[serde(rename = "numberOfVms", default, skip_serializing_if = "Option::is_none")]
pub number_of_vms: Option<f64>,
}
impl AppWhitelistingIssueSummary {
pub fn new() -> Self {
Self::default()
}
}
pub type AppWhitelistingIssuesSummaries = Vec<AppWhitelistingIssueSummary>;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AppWhitelistingPutGroupData {
#[serde(rename = "enforcementMode", default, skip_serializing_if = "Option::is_none")]
pub enforcement_mode: Option<EnforcementMode>,
#[serde(rename = "protectionMode", default, skip_serializing_if = "Option::is_none")]
pub protection_mode: Option<ProtectionMode>,
#[serde(rename = "vmRecommendations", default, skip_serializing_if = "Option::is_none")]
pub vm_recommendations: Option<VmRecommendations>,
#[serde(rename = "pathRecommendations", default, skip_serializing_if = "Option::is_none")]
pub path_recommendations: Option<PathRecommendations>,
}
impl AppWhitelistingPutGroupData {
pub fn new() -> Self {
Self::default()
}
}
pub type AppWhitelistingResourceType = String;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AscLocation {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AscLocationProperties>,
}
impl AscLocation {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AscLocationList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<AscLocation>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl AscLocationList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AscLocationProperties {}
impl AscLocationProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AtaExternalSecuritySolution {
#[serde(flatten)]
pub external_security_solution: ExternalSecuritySolution,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AtaSolutionProperties>,
}
impl AtaExternalSecuritySolution {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AtaSolutionProperties {
#[serde(flatten)]
pub external_security_solution_properties: ExternalSecuritySolutionProperties,
#[serde(rename = "lastEventReceived", default, skip_serializing_if = "Option::is_none")]
pub last_event_received: Option<String>,
}
impl AtaSolutionProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AuthenticationDetailsProperties {
#[serde(rename = "authenticationProvisioningState", default, skip_serializing_if = "Option::is_none")]
pub authentication_provisioning_state: Option<authentication_details_properties::AuthenticationProvisioningState>,
#[serde(rename = "grantedPermissions", default, skip_serializing_if = "Vec::is_empty")]
pub granted_permissions: Vec<PermissionProperty>,
#[serde(rename = "authenticationType")]
pub authentication_type: authentication_details_properties::AuthenticationType,
}
impl AuthenticationDetailsProperties {
pub fn new(authentication_type: authentication_details_properties::AuthenticationType) -> Self {
Self {
authentication_provisioning_state: None,
granted_permissions: Vec::new(),
authentication_type,
}
}
}
pub mod authentication_details_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum AuthenticationProvisioningState {
Valid,
Invalid,
Expired,
IncorrectPolicy,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum AuthenticationType {
#[serde(rename = "awsCreds")]
AwsCreds,
#[serde(rename = "awsAssumeRole")]
AwsAssumeRole,
#[serde(rename = "gcpCredentials")]
GcpCredentials,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AutoProvisioningSetting {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AutoProvisioningSettingProperties>,
}
impl AutoProvisioningSetting {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AutoProvisioningSettingList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<AutoProvisioningSetting>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl AutoProvisioningSettingList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AutoProvisioningSettingProperties {
#[serde(rename = "autoProvision")]
pub auto_provision: auto_provisioning_setting_properties::AutoProvision,
}
impl AutoProvisioningSettingProperties {
pub fn new(auto_provision: auto_provisioning_setting_properties::AutoProvision) -> Self {
Self { auto_provision }
}
}
pub mod auto_provisioning_setting_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum AutoProvision {
On,
Off,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Automation {
#[serde(flatten)]
pub tracked_resource: TrackedResource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<AutomationProperties>,
}
impl Automation {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AutomationAction {
#[serde(rename = "actionType")]
pub action_type: automation_action::ActionType,
}
impl AutomationAction {
pub fn new(action_type: automation_action::ActionType) -> Self {
Self { action_type }
}
}
pub mod automation_action {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ActionType {
LogicApp,
EventHub,
Workspace,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AutomationActionEventHub {
#[serde(flatten)]
pub automation_action: AutomationAction,
#[serde(rename = "eventHubResourceId", default, skip_serializing_if = "Option::is_none")]
pub event_hub_resource_id: Option<String>,
#[serde(rename = "sasPolicyName", default, skip_serializing_if = "Option::is_none")]
pub sas_policy_name: Option<String>,
#[serde(rename = "connectionString", default, skip_serializing_if = "Option::is_none")]
pub connection_string: Option<String>,
}
impl AutomationActionEventHub {
pub fn new(automation_action: AutomationAction) -> Self {
Self {
automation_action,
event_hub_resource_id: None,
sas_policy_name: None,
connection_string: None,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AutomationActionLogicApp {
#[serde(flatten)]
pub automation_action: AutomationAction,
#[serde(rename = "logicAppResourceId", default, skip_serializing_if = "Option::is_none")]
pub logic_app_resource_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uri: Option<String>,
}
impl AutomationActionLogicApp {
pub fn new(automation_action: AutomationAction) -> Self {
Self {
automation_action,
logic_app_resource_id: None,
uri: None,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AutomationActionWorkspace {
#[serde(flatten)]
pub automation_action: AutomationAction,
#[serde(rename = "workspaceResourceId", default, skip_serializing_if = "Option::is_none")]
pub workspace_resource_id: Option<String>,
}
impl AutomationActionWorkspace {
pub fn new(automation_action: AutomationAction) -> Self {
Self {
automation_action,
workspace_resource_id: None,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AutomationList {
pub value: Vec<Automation>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl AutomationList {
pub fn new(value: Vec<Automation>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AutomationProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "isEnabled", default, skip_serializing_if = "Option::is_none")]
pub is_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub scopes: Vec<AutomationScope>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sources: Vec<AutomationSource>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub actions: Vec<AutomationAction>,
}
impl AutomationProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AutomationRuleSet {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub rules: Vec<AutomationTriggeringRule>,
}
impl AutomationRuleSet {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AutomationScope {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "scopePath", default, skip_serializing_if = "Option::is_none")]
pub scope_path: Option<String>,
}
impl AutomationScope {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AutomationSource {
#[serde(rename = "eventSource", default, skip_serializing_if = "Option::is_none")]
pub event_source: Option<automation_source::EventSource>,
#[serde(rename = "ruleSets", default, skip_serializing_if = "Vec::is_empty")]
pub rule_sets: Vec<AutomationRuleSet>,
}
impl AutomationSource {
pub fn new() -> Self {
Self::default()
}
}
pub mod automation_source {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum EventSource {
Assessments,
AssessmentsSnapshot,
SubAssessments,
SubAssessmentsSnapshot,
Alerts,
SecureScores,
SecureScoresSnapshot,
SecureScoreControls,
SecureScoreControlsSnapshot,
RegulatoryComplianceAssessment,
RegulatoryComplianceAssessmentSnapshot,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AutomationTriggeringRule {
#[serde(rename = "propertyJPath", default, skip_serializing_if = "Option::is_none")]
pub property_j_path: Option<String>,
#[serde(rename = "propertyType", default, skip_serializing_if = "Option::is_none")]
pub property_type: Option<automation_triggering_rule::PropertyType>,
#[serde(rename = "expectedValue", default, skip_serializing_if = "Option::is_none")]
pub expected_value: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operator: Option<automation_triggering_rule::Operator>,
}
impl AutomationTriggeringRule {
pub fn new() -> Self {
Self::default()
}
}
pub mod automation_triggering_rule {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum PropertyType {
String,
Integer,
Number,
Boolean,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Operator {
Equals,
GreaterThan,
GreaterThanOrEqualTo,
LesserThan,
LesserThanOrEqualTo,
NotEquals,
Contains,
StartsWith,
EndsWith,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AutomationValidationStatus {
#[serde(rename = "isValid", default, skip_serializing_if = "Option::is_none")]
pub is_valid: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
impl AutomationValidationStatus {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AwAssumeRoleAuthenticationDetailsProperties {
#[serde(flatten)]
pub authentication_details_properties: AuthenticationDetailsProperties,
#[serde(rename = "accountId", default, skip_serializing_if = "Option::is_none")]
pub account_id: Option<String>,
#[serde(rename = "awsAssumeRoleArn")]
pub aws_assume_role_arn: String,
#[serde(rename = "awsExternalId")]
pub aws_external_id: String,
}
impl AwAssumeRoleAuthenticationDetailsProperties {
pub fn new(
authentication_details_properties: AuthenticationDetailsProperties,
aws_assume_role_arn: String,
aws_external_id: String,
) -> Self {
Self {
authentication_details_properties,
account_id: None,
aws_assume_role_arn,
aws_external_id,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AwsCredsAuthenticationDetailsProperties {
#[serde(flatten)]
pub authentication_details_properties: AuthenticationDetailsProperties,
#[serde(rename = "accountId", default, skip_serializing_if = "Option::is_none")]
pub account_id: Option<String>,
#[serde(rename = "awsAccessKeyId")]
pub aws_access_key_id: String,
#[serde(rename = "awsSecretAccessKey")]
pub aws_secret_access_key: String,
}
impl AwsCredsAuthenticationDetailsProperties {
pub fn new(
authentication_details_properties: AuthenticationDetailsProperties,
aws_access_key_id: String,
aws_secret_access_key: String,
) -> Self {
Self {
authentication_details_properties,
account_id: None,
aws_access_key_id,
aws_secret_access_key,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AzureResourceLink {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
impl AzureResourceLink {
pub fn new() -> Self {
Self::default()
}
}
pub type AzureResourceLinks = Vec<AzureResourceLink>;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct AzureTrackedResourceLocation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
}
impl AzureTrackedResourceLocation {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Baseline {
#[serde(rename = "expectedResults", default, skip_serializing_if = "Vec::is_empty")]
pub expected_results: Vec<Vec<String>>,
#[serde(rename = "updatedTime", default, skip_serializing_if = "Option::is_none")]
pub updated_time: Option<String>,
}
impl Baseline {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct BaselineAdjustedResult {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub baseline: Option<Baseline>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<RuleStatus>,
#[serde(rename = "resultsNotInBaseline", default, skip_serializing_if = "Vec::is_empty")]
pub results_not_in_baseline: Vec<Vec<String>>,
#[serde(rename = "resultsOnlyInBaseline", default, skip_serializing_if = "Vec::is_empty")]
pub results_only_in_baseline: Vec<Vec<String>>,
}
impl BaselineAdjustedResult {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct BenchmarkReference {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub benchmark: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reference: Option<String>,
}
impl BenchmarkReference {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Cve {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link: Option<String>,
}
impl Cve {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Cvss {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub base: Option<f64>,
}
impl Cvss {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CefExternalSecuritySolution {
#[serde(flatten)]
pub external_security_solution: ExternalSecuritySolution,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<CefSolutionProperties>,
}
impl CefExternalSecuritySolution {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CefSolutionProperties {
#[serde(flatten)]
pub external_security_solution_properties: ExternalSecuritySolutionProperties,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent: Option<String>,
#[serde(rename = "lastEventReceived", default, skip_serializing_if = "Option::is_none")]
pub last_event_received: Option<String>,
}
impl CefSolutionProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CloudError {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<CloudErrorBody>,
}
impl CloudError {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CloudErrorBody {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub details: Vec<CloudErrorBody>,
#[serde(rename = "additionalInfo", default, skip_serializing_if = "Vec::is_empty")]
pub additional_info: Vec<ErrorAdditionalInfo>,
}
impl CloudErrorBody {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Compliance {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<ComplianceProperties>,
}
impl Compliance {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ComplianceList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Compliance>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl ComplianceList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ComplianceProperties {
#[serde(rename = "assessmentTimestampUtcDate", default, skip_serializing_if = "Option::is_none")]
pub assessment_timestamp_utc_date: Option<String>,
#[serde(rename = "resourceCount", default, skip_serializing_if = "Option::is_none")]
pub resource_count: Option<i64>,
#[serde(rename = "assessmentResult", default, skip_serializing_if = "Vec::is_empty")]
pub assessment_result: Vec<ComplianceSegment>,
}
impl ComplianceProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ComplianceSegment {
#[serde(rename = "segmentType", default, skip_serializing_if = "Option::is_none")]
pub segment_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub percentage: Option<f64>,
}
impl ComplianceSegment {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ConfigurationStatus {
Configured,
NotConfigured,
InProgress,
Failed,
NoStatus,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ConnectableResource {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "inboundConnectedResources", default, skip_serializing_if = "Vec::is_empty")]
pub inbound_connected_resources: Vec<ConnectedResource>,
#[serde(rename = "outboundConnectedResources", default, skip_serializing_if = "Vec::is_empty")]
pub outbound_connected_resources: Vec<ConnectedResource>,
}
impl ConnectableResource {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ConnectedResource {
#[serde(rename = "connectedResourceId", default, skip_serializing_if = "Option::is_none")]
pub connected_resource_id: Option<String>,
#[serde(rename = "tcpPorts", default, skip_serializing_if = "Option::is_none")]
pub tcp_ports: Option<String>,
#[serde(rename = "udpPorts", default, skip_serializing_if = "Option::is_none")]
pub udp_ports: Option<String>,
}
impl ConnectedResource {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ConnectedWorkspace {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
impl ConnectedWorkspace {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ConnectionStrings {
pub value: Vec<IngestionConnectionString>,
}
impl ConnectionStrings {
pub fn new(value: Vec<IngestionConnectionString>) -> Self {
Self { value }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ConnectionToIpNotAllowed {
#[serde(flatten)]
pub allowlist_custom_alert_rule: AllowlistCustomAlertRule,
}
impl ConnectionToIpNotAllowed {
pub fn new(allowlist_custom_alert_rule: AllowlistCustomAlertRule) -> Self {
Self {
allowlist_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ConnectorSetting {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<ConnectorSettingProperties>,
}
impl ConnectorSetting {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ConnectorSettingList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<ConnectorSetting>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl ConnectorSettingList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ConnectorSettingProperties {
#[serde(rename = "hybridComputeSettings", default, skip_serializing_if = "Option::is_none")]
pub hybrid_compute_settings: Option<HybridComputeSettingsProperties>,
#[serde(rename = "authenticationDetails", default, skip_serializing_if = "Option::is_none")]
pub authentication_details: Option<AuthenticationDetailsProperties>,
}
impl ConnectorSettingProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ContainerRegistryVulnerabilityProperties {
#[serde(flatten)]
pub additional_data: AdditionalData,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cvss: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub patchable: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub cve: Vec<Cve>,
#[serde(rename = "publishedTime", default, skip_serializing_if = "Option::is_none")]
pub published_time: Option<String>,
#[serde(rename = "vendorReferences", default, skip_serializing_if = "Vec::is_empty")]
pub vendor_references: Vec<VendorReference>,
#[serde(rename = "repositoryName", default, skip_serializing_if = "Option::is_none")]
pub repository_name: Option<String>,
#[serde(rename = "imageDigest", default, skip_serializing_if = "Option::is_none")]
pub image_digest: Option<String>,
}
impl ContainerRegistryVulnerabilityProperties {
pub fn new(additional_data: AdditionalData) -> Self {
Self {
additional_data,
type_: None,
cvss: None,
patchable: None,
cve: Vec::new(),
published_time: None,
vendor_references: Vec::new(),
repository_name: None,
image_digest: None,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CustomAlertRule {
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "isEnabled")]
pub is_enabled: bool,
#[serde(rename = "ruleType")]
pub rule_type: String,
}
impl CustomAlertRule {
pub fn new(is_enabled: bool, rule_type: String) -> Self {
Self {
display_name: None,
description: None,
is_enabled,
rule_type,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomEntityStoreAssignment {
#[serde(flatten)]
pub resource: Resource,
#[serde(rename = "systemData", default, skip_serializing_if = "Option::is_none")]
pub system_data: Option<SystemData>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<CustomEntityStoreAssignmentProperties>,
}
impl CustomEntityStoreAssignment {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomEntityStoreAssignmentProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub principal: Option<String>,
#[serde(rename = "entityStoreDatabaseLink", default, skip_serializing_if = "Option::is_none")]
pub entity_store_database_link: Option<String>,
}
impl CustomEntityStoreAssignmentProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomEntityStoreAssignmentRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<CustomEntityStoreAssignmentRequestProperties>,
}
impl CustomEntityStoreAssignmentRequest {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomEntityStoreAssignmentRequestProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub principal: Option<String>,
}
impl CustomEntityStoreAssignmentRequestProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomEntityStoreAssignmentsListResult {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<CustomEntityStoreAssignment>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl CustomEntityStoreAssignmentsListResult {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataExportSetting {
#[serde(flatten)]
pub setting: Setting,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<DataExportSettingProperties>,
}
impl DataExportSetting {
pub fn new(setting: Setting) -> Self {
Self { setting, properties: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataExportSettingProperties {
pub enabled: bool,
}
impl DataExportSettingProperties {
pub fn new(enabled: bool) -> Self {
Self { enabled }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DenylistCustomAlertRule {
#[serde(flatten)]
pub list_custom_alert_rule: ListCustomAlertRule,
#[serde(rename = "denylistValues")]
pub denylist_values: Vec<String>,
}
impl DenylistCustomAlertRule {
pub fn new(list_custom_alert_rule: ListCustomAlertRule, denylist_values: Vec<String>) -> Self {
Self {
list_custom_alert_rule,
denylist_values,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DeviceSecurityGroup {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<DeviceSecurityGroupProperties>,
}
impl DeviceSecurityGroup {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DeviceSecurityGroupList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<DeviceSecurityGroup>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl DeviceSecurityGroupList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DeviceSecurityGroupProperties {
#[serde(rename = "thresholdRules", default, skip_serializing_if = "Vec::is_empty")]
pub threshold_rules: Vec<ThresholdCustomAlertRule>,
#[serde(rename = "timeWindowRules", default, skip_serializing_if = "Vec::is_empty")]
pub time_window_rules: Vec<TimeWindowCustomAlertRule>,
#[serde(rename = "allowlistRules", default, skip_serializing_if = "Vec::is_empty")]
pub allowlist_rules: Vec<AllowlistCustomAlertRule>,
#[serde(rename = "denylistRules", default, skip_serializing_if = "Vec::is_empty")]
pub denylist_rules: Vec<DenylistCustomAlertRule>,
}
impl DeviceSecurityGroupProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DirectMethodInvokesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl DirectMethodInvokesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DiscoveredSecuritySolution {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub location: Location,
pub properties: DiscoveredSecuritySolutionProperties,
}
impl DiscoveredSecuritySolution {
pub fn new(properties: DiscoveredSecuritySolutionProperties) -> Self {
Self {
resource: Resource::default(),
location: Location::default(),
properties,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DiscoveredSecuritySolutionList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<DiscoveredSecuritySolution>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl DiscoveredSecuritySolutionList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DiscoveredSecuritySolutionProperties {
#[serde(rename = "securityFamily")]
pub security_family: discovered_security_solution_properties::SecurityFamily,
pub offer: String,
pub publisher: String,
pub sku: String,
}
impl DiscoveredSecuritySolutionProperties {
pub fn new(
security_family: discovered_security_solution_properties::SecurityFamily,
offer: String,
publisher: String,
sku: String,
) -> Self {
Self {
security_family,
offer,
publisher,
sku,
}
}
}
pub mod discovered_security_solution_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum SecurityFamily {
Waf,
Ngfw,
SaasWaf,
Va,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ETag {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
}
impl ETag {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct EffectiveNetworkSecurityGroups {
#[serde(rename = "networkInterface", default, skip_serializing_if = "Option::is_none")]
pub network_interface: Option<String>,
#[serde(rename = "networkSecurityGroups", default, skip_serializing_if = "Vec::is_empty")]
pub network_security_groups: Vec<String>,
}
impl EffectiveNetworkSecurityGroups {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum EnforcementMode {
Audit,
Enforce,
None,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum EnforcementSupport {
Supported,
NotSupported,
Unknown,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ErrorAdditionalInfo {
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub info: Option<serde_json::Value>,
}
impl ErrorAdditionalInfo {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ExternalSecuritySolution {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub external_security_solution_kind: ExternalSecuritySolutionKind,
#[serde(flatten)]
pub location: Location,
}
impl ExternalSecuritySolution {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ExternalSecuritySolutionKind {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kind: Option<external_security_solution_kind::Kind>,
}
impl ExternalSecuritySolutionKind {
pub fn new() -> Self {
Self::default()
}
}
pub mod external_security_solution_kind {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Kind {
#[serde(rename = "CEF")]
Cef,
#[serde(rename = "ATA")]
Ata,
#[serde(rename = "AAD")]
Aad,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ExternalSecuritySolutionList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<ExternalSecuritySolution>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl ExternalSecuritySolutionList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ExternalSecuritySolutionProperties {
#[serde(rename = "deviceVendor", default, skip_serializing_if = "Option::is_none")]
pub device_vendor: Option<String>,
#[serde(rename = "deviceType", default, skip_serializing_if = "Option::is_none")]
pub device_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub workspace: Option<ConnectedWorkspace>,
}
impl ExternalSecuritySolutionProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FailedLocalLoginsNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl FailedLocalLoginsNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum FileType {
Exe,
Dll,
Msi,
Script,
Executable,
Unknown,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct FileUploadsNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl FileUploadsNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct GcpCredentialsDetailsProperties {
#[serde(flatten)]
pub authentication_details_properties: AuthenticationDetailsProperties,
#[serde(rename = "organizationId")]
pub organization_id: String,
#[serde(rename = "type")]
pub type_: String,
#[serde(rename = "projectId")]
pub project_id: String,
#[serde(rename = "privateKeyId")]
pub private_key_id: String,
#[serde(rename = "privateKey")]
pub private_key: String,
#[serde(rename = "clientEmail")]
pub client_email: String,
#[serde(rename = "clientId")]
pub client_id: String,
#[serde(rename = "authUri")]
pub auth_uri: String,
#[serde(rename = "tokenUri")]
pub token_uri: String,
#[serde(rename = "authProviderX509CertUrl")]
pub auth_provider_x509_cert_url: String,
#[serde(rename = "clientX509CertUrl")]
pub client_x509_cert_url: String,
}
impl GcpCredentialsDetailsProperties {
pub fn new(
authentication_details_properties: AuthenticationDetailsProperties,
organization_id: String,
type_: String,
project_id: String,
private_key_id: String,
private_key: String,
client_email: String,
client_id: String,
auth_uri: String,
token_uri: String,
auth_provider_x509_cert_url: String,
client_x509_cert_url: String,
) -> Self {
Self {
authentication_details_properties,
organization_id,
type_,
project_id,
private_key_id,
private_key,
client_email,
client_id,
auth_uri,
token_uri,
auth_provider_x509_cert_url,
client_x509_cert_url,
}
}
}
pub type GroupResourceId = String;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct HttpC2dMessagesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl HttpC2dMessagesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct HttpC2dRejectedMessagesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl HttpC2dRejectedMessagesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct HttpD2cMessagesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl HttpD2cMessagesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct HybridComputeSettingsProperties {
#[serde(rename = "hybridComputeProvisioningState", default, skip_serializing_if = "Option::is_none")]
pub hybrid_compute_provisioning_state: Option<hybrid_compute_settings_properties::HybridComputeProvisioningState>,
#[serde(rename = "autoProvision")]
pub auto_provision: hybrid_compute_settings_properties::AutoProvision,
#[serde(rename = "resourceGroupName", default, skip_serializing_if = "Option::is_none")]
pub resource_group_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(rename = "proxyServer", default, skip_serializing_if = "Option::is_none")]
pub proxy_server: Option<ProxyServerProperties>,
#[serde(rename = "servicePrincipal", default, skip_serializing_if = "Option::is_none")]
pub service_principal: Option<ServicePrincipalProperties>,
}
impl HybridComputeSettingsProperties {
pub fn new(auto_provision: hybrid_compute_settings_properties::AutoProvision) -> Self {
Self {
hybrid_compute_provisioning_state: None,
auto_provision,
resource_group_name: None,
region: None,
proxy_server: None,
service_principal: None,
}
}
}
pub mod hybrid_compute_settings_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum HybridComputeProvisioningState {
Valid,
Invalid,
Expired,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum AutoProvision {
On,
Off,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct InformationProtectionKeyword {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pattern: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub custom: Option<bool>,
#[serde(rename = "canBeNumeric", default, skip_serializing_if = "Option::is_none")]
pub can_be_numeric: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub excluded: Option<bool>,
}
impl InformationProtectionKeyword {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct InformationProtectionPolicy {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<InformationProtectionPolicyProperties>,
}
impl InformationProtectionPolicy {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct InformationProtectionPolicyList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<InformationProtectionPolicy>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl InformationProtectionPolicyList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct InformationProtectionPolicyProperties {
#[serde(rename = "lastModifiedUtc", default, skip_serializing_if = "Option::is_none")]
pub last_modified_utc: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub labels: Option<serde_json::Value>,
#[serde(rename = "informationTypes", default, skip_serializing_if = "Option::is_none")]
pub information_types: Option<serde_json::Value>,
}
impl InformationProtectionPolicyProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct InformationType {
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order: Option<i32>,
#[serde(rename = "recommendedLabelId", default, skip_serializing_if = "Option::is_none")]
pub recommended_label_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub custom: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub keywords: Vec<InformationProtectionKeyword>,
}
impl InformationType {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IngestionConnectionString {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
impl IngestionConnectionString {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IngestionSetting {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<IngestionSettingProperties>,
}
impl IngestionSetting {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IngestionSettingList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<IngestionSetting>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl IngestionSettingList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IngestionSettingProperties {}
impl IngestionSettingProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IngestionSettingToken {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub token: Option<String>,
}
impl IngestionSettingToken {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecurityAggregatedAlert {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub tags_resource: TagsResource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<IoTSecurityAggregatedAlertProperties>,
}
impl IoTSecurityAggregatedAlert {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTSecurityAggregatedAlertList {
pub value: Vec<IoTSecurityAggregatedAlert>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl IoTSecurityAggregatedAlertList {
pub fn new(value: Vec<IoTSecurityAggregatedAlert>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecurityAggregatedAlertProperties {
#[serde(rename = "alertType", default, skip_serializing_if = "Option::is_none")]
pub alert_type: Option<String>,
#[serde(rename = "alertDisplayName", default, skip_serializing_if = "Option::is_none")]
pub alert_display_name: Option<String>,
#[serde(rename = "aggregatedDateUtc", default, skip_serializing_if = "Option::is_none")]
pub aggregated_date_utc: Option<String>,
#[serde(rename = "vendorName", default, skip_serializing_if = "Option::is_none")]
pub vendor_name: Option<String>,
#[serde(rename = "reportedSeverity", default, skip_serializing_if = "Option::is_none")]
pub reported_severity: Option<io_t_security_aggregated_alert_properties::ReportedSeverity>,
#[serde(rename = "remediationSteps", default, skip_serializing_if = "Option::is_none")]
pub remediation_steps: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(rename = "effectedResourceType", default, skip_serializing_if = "Option::is_none")]
pub effected_resource_type: Option<String>,
#[serde(rename = "systemSource", default, skip_serializing_if = "Option::is_none")]
pub system_source: Option<String>,
#[serde(rename = "actionTaken", default, skip_serializing_if = "Option::is_none")]
pub action_taken: Option<String>,
#[serde(rename = "logAnalyticsQuery", default, skip_serializing_if = "Option::is_none")]
pub log_analytics_query: Option<String>,
}
impl IoTSecurityAggregatedAlertProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod io_t_security_aggregated_alert_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ReportedSeverity {
Informational,
Low,
Medium,
High,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecurityAggregatedRecommendation {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub tags_resource: TagsResource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<IoTSecurityAggregatedRecommendationProperties>,
}
impl IoTSecurityAggregatedRecommendation {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTSecurityAggregatedRecommendationList {
pub value: Vec<IoTSecurityAggregatedRecommendation>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl IoTSecurityAggregatedRecommendationList {
pub fn new(value: Vec<IoTSecurityAggregatedRecommendation>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecurityAggregatedRecommendationProperties {
#[serde(rename = "recommendationName", default, skip_serializing_if = "Option::is_none")]
pub recommendation_name: Option<String>,
#[serde(rename = "recommendationDisplayName", default, skip_serializing_if = "Option::is_none")]
pub recommendation_display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "recommendationTypeId", default, skip_serializing_if = "Option::is_none")]
pub recommendation_type_id: Option<String>,
#[serde(rename = "detectedBy", default, skip_serializing_if = "Option::is_none")]
pub detected_by: Option<String>,
#[serde(rename = "remediationSteps", default, skip_serializing_if = "Option::is_none")]
pub remediation_steps: Option<String>,
#[serde(rename = "reportedSeverity", default, skip_serializing_if = "Option::is_none")]
pub reported_severity: Option<io_t_security_aggregated_recommendation_properties::ReportedSeverity>,
#[serde(rename = "healthyDevices", default, skip_serializing_if = "Option::is_none")]
pub healthy_devices: Option<i64>,
#[serde(rename = "unhealthyDeviceCount", default, skip_serializing_if = "Option::is_none")]
pub unhealthy_device_count: Option<i64>,
#[serde(rename = "logAnalyticsQuery", default, skip_serializing_if = "Option::is_none")]
pub log_analytics_query: Option<String>,
}
impl IoTSecurityAggregatedRecommendationProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod io_t_security_aggregated_recommendation_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ReportedSeverity {
Informational,
Low,
Medium,
High,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecurityAlertedDevice {
#[serde(rename = "deviceId", default, skip_serializing_if = "Option::is_none")]
pub device_id: Option<String>,
#[serde(rename = "alertsCount", default, skip_serializing_if = "Option::is_none")]
pub alerts_count: Option<i64>,
}
impl IoTSecurityAlertedDevice {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTSecurityAlertedDevicesList {
pub value: Vec<IoTSecurityAlertedDevice>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl IoTSecurityAlertedDevicesList {
pub fn new(value: Vec<IoTSecurityAlertedDevice>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecurityDeviceAlert {
#[serde(rename = "alertDisplayName", default, skip_serializing_if = "Option::is_none")]
pub alert_display_name: Option<String>,
#[serde(rename = "reportedSeverity", default, skip_serializing_if = "Option::is_none")]
pub reported_severity: Option<io_t_security_device_alert::ReportedSeverity>,
#[serde(rename = "alertsCount", default, skip_serializing_if = "Option::is_none")]
pub alerts_count: Option<i64>,
}
impl IoTSecurityDeviceAlert {
pub fn new() -> Self {
Self::default()
}
}
pub mod io_t_security_device_alert {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ReportedSeverity {
Informational,
Low,
Medium,
High,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTSecurityDeviceAlertsList {
pub value: Vec<IoTSecurityDeviceAlert>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl IoTSecurityDeviceAlertsList {
pub fn new(value: Vec<IoTSecurityDeviceAlert>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecurityDeviceRecommendation {
#[serde(rename = "recommendationDisplayName", default, skip_serializing_if = "Option::is_none")]
pub recommendation_display_name: Option<String>,
#[serde(rename = "reportedSeverity", default, skip_serializing_if = "Option::is_none")]
pub reported_severity: Option<io_t_security_device_recommendation::ReportedSeverity>,
#[serde(rename = "devicesCount", default, skip_serializing_if = "Option::is_none")]
pub devices_count: Option<i64>,
}
impl IoTSecurityDeviceRecommendation {
pub fn new() -> Self {
Self::default()
}
}
pub mod io_t_security_device_recommendation {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ReportedSeverity {
Informational,
Low,
Medium,
High,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTSecurityDeviceRecommendationsList {
pub value: Vec<IoTSecurityDeviceRecommendation>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl IoTSecurityDeviceRecommendationsList {
pub fn new(value: Vec<IoTSecurityDeviceRecommendation>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecuritySolutionAnalyticsModel {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<IoTSecuritySolutionAnalyticsModelProperties>,
}
impl IoTSecuritySolutionAnalyticsModel {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTSecuritySolutionAnalyticsModelList {
pub value: Vec<IoTSecuritySolutionAnalyticsModel>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl IoTSecuritySolutionAnalyticsModelList {
pub fn new(value: Vec<IoTSecuritySolutionAnalyticsModel>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecuritySolutionAnalyticsModelProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metrics: Option<IoTSeverityMetrics>,
#[serde(rename = "unhealthyDeviceCount", default, skip_serializing_if = "Option::is_none")]
pub unhealthy_device_count: Option<i64>,
#[serde(rename = "devicesMetrics", default, skip_serializing_if = "Vec::is_empty")]
pub devices_metrics: Vec<serde_json::Value>,
#[serde(rename = "topAlertedDevices", default, skip_serializing_if = "Option::is_none")]
pub top_alerted_devices: Option<IoTSecurityAlertedDevicesList>,
#[serde(rename = "mostPrevalentDeviceAlerts", default, skip_serializing_if = "Option::is_none")]
pub most_prevalent_device_alerts: Option<IoTSecurityDeviceAlertsList>,
#[serde(rename = "mostPrevalentDeviceRecommendations", default, skip_serializing_if = "Option::is_none")]
pub most_prevalent_device_recommendations: Option<IoTSecurityDeviceRecommendationsList>,
}
impl IoTSecuritySolutionAnalyticsModelProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSecuritySolutionModel {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub tags_resource: TagsResource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<IoTSecuritySolutionProperties>,
}
impl IoTSecuritySolutionModel {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTSecuritySolutionProperties {
pub workspace: String,
#[serde(rename = "displayName")]
pub display_name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<io_t_security_solution_properties::Status>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub export: Vec<String>,
#[serde(rename = "disabledDataSources", default, skip_serializing_if = "Vec::is_empty")]
pub disabled_data_sources: Vec<String>,
#[serde(rename = "iotHubs")]
pub iot_hubs: Vec<String>,
#[serde(rename = "userDefinedResources", default, skip_serializing_if = "Option::is_none")]
pub user_defined_resources: Option<UserDefinedResourcesProperties>,
#[serde(rename = "autoDiscoveredResources", default, skip_serializing_if = "Vec::is_empty")]
pub auto_discovered_resources: Vec<String>,
#[serde(rename = "recommendationsConfiguration", default, skip_serializing_if = "Option::is_none")]
pub recommendations_configuration: Option<RecommendationConfigurationList>,
}
impl IoTSecuritySolutionProperties {
pub fn new(workspace: String, display_name: String, iot_hubs: Vec<String>) -> Self {
Self {
workspace,
display_name,
status: None,
export: Vec::new(),
disabled_data_sources: Vec::new(),
iot_hubs,
user_defined_resources: None,
auto_discovered_resources: Vec::new(),
recommendations_configuration: None,
}
}
}
pub mod io_t_security_solution_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Status {
Enabled,
Disabled,
}
impl Default for Status {
fn default() -> Self {
Self::Enabled
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct IoTSecuritySolutionsList {
pub value: Vec<IoTSecuritySolutionModel>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl IoTSecuritySolutionsList {
pub fn new(value: Vec<IoTSecuritySolutionModel>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct IoTSeverityMetrics {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub high: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub medium: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub low: Option<i64>,
}
impl IoTSeverityMetrics {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct JitNetworkAccessPoliciesList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<JitNetworkAccessPolicy>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl JitNetworkAccessPoliciesList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessPolicy {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub kind: Kind,
#[serde(flatten)]
pub location: Location,
pub properties: JitNetworkAccessPolicyProperties,
}
impl JitNetworkAccessPolicy {
pub fn new(properties: JitNetworkAccessPolicyProperties) -> Self {
Self {
resource: Resource::default(),
kind: Kind::default(),
location: Location::default(),
properties,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessPolicyInitiatePort {
pub number: PortNumber,
#[serde(rename = "allowedSourceAddressPrefix", default, skip_serializing_if = "Option::is_none")]
pub allowed_source_address_prefix: Option<String>,
#[serde(rename = "endTimeUtc")]
pub end_time_utc: String,
}
impl JitNetworkAccessPolicyInitiatePort {
pub fn new(number: PortNumber, end_time_utc: String) -> Self {
Self {
number,
allowed_source_address_prefix: None,
end_time_utc,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessPolicyInitiateRequest {
#[serde(rename = "virtualMachines")]
pub virtual_machines: Vec<JitNetworkAccessPolicyInitiateVirtualMachine>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub justification: Option<String>,
}
impl JitNetworkAccessPolicyInitiateRequest {
pub fn new(virtual_machines: Vec<JitNetworkAccessPolicyInitiateVirtualMachine>) -> Self {
Self {
virtual_machines,
justification: None,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessPolicyInitiateVirtualMachine {
pub id: String,
pub ports: Vec<JitNetworkAccessPolicyInitiatePort>,
}
impl JitNetworkAccessPolicyInitiateVirtualMachine {
pub fn new(id: String, ports: Vec<JitNetworkAccessPolicyInitiatePort>) -> Self {
Self { id, ports }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessPolicyProperties {
#[serde(rename = "virtualMachines")]
pub virtual_machines: Vec<JitNetworkAccessPolicyVirtualMachine>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub requests: Vec<JitNetworkAccessRequest>,
#[serde(rename = "provisioningState", default, skip_serializing_if = "Option::is_none")]
pub provisioning_state: Option<String>,
}
impl JitNetworkAccessPolicyProperties {
pub fn new(virtual_machines: Vec<JitNetworkAccessPolicyVirtualMachine>) -> Self {
Self {
virtual_machines,
requests: Vec::new(),
provisioning_state: None,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessPolicyVirtualMachine {
pub id: String,
pub ports: Vec<JitNetworkAccessPortRule>,
#[serde(rename = "publicIpAddress", default, skip_serializing_if = "Option::is_none")]
pub public_ip_address: Option<String>,
}
impl JitNetworkAccessPolicyVirtualMachine {
pub fn new(id: String, ports: Vec<JitNetworkAccessPortRule>) -> Self {
Self {
id,
ports,
public_ip_address: None,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessPortRule {
pub number: PortNumber,
pub protocol: jit_network_access_port_rule::Protocol,
#[serde(rename = "allowedSourceAddressPrefix", default, skip_serializing_if = "Option::is_none")]
pub allowed_source_address_prefix: Option<String>,
#[serde(rename = "allowedSourceAddressPrefixes", default, skip_serializing_if = "Vec::is_empty")]
pub allowed_source_address_prefixes: Vec<String>,
#[serde(rename = "maxRequestAccessDuration")]
pub max_request_access_duration: String,
}
impl JitNetworkAccessPortRule {
pub fn new(number: PortNumber, protocol: jit_network_access_port_rule::Protocol, max_request_access_duration: String) -> Self {
Self {
number,
protocol,
allowed_source_address_prefix: None,
allowed_source_address_prefixes: Vec::new(),
max_request_access_duration,
}
}
}
pub mod jit_network_access_port_rule {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Protocol {
#[serde(rename = "TCP")]
Tcp,
#[serde(rename = "UDP")]
Udp,
#[serde(rename = "*")]
U2a,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessRequest {
#[serde(rename = "virtualMachines")]
pub virtual_machines: Vec<JitNetworkAccessRequestVirtualMachine>,
#[serde(rename = "startTimeUtc")]
pub start_time_utc: String,
pub requestor: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub justification: Option<String>,
}
impl JitNetworkAccessRequest {
pub fn new(virtual_machines: Vec<JitNetworkAccessRequestVirtualMachine>, start_time_utc: String, requestor: String) -> Self {
Self {
virtual_machines,
start_time_utc,
requestor,
justification: None,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessRequestPort {
pub number: PortNumber,
#[serde(rename = "allowedSourceAddressPrefix", default, skip_serializing_if = "Option::is_none")]
pub allowed_source_address_prefix: Option<String>,
#[serde(rename = "allowedSourceAddressPrefixes", default, skip_serializing_if = "Vec::is_empty")]
pub allowed_source_address_prefixes: Vec<String>,
#[serde(rename = "endTimeUtc")]
pub end_time_utc: String,
pub status: jit_network_access_request_port::Status,
#[serde(rename = "statusReason")]
pub status_reason: jit_network_access_request_port::StatusReason,
#[serde(rename = "mappedPort", default, skip_serializing_if = "Option::is_none")]
pub mapped_port: Option<i64>,
}
impl JitNetworkAccessRequestPort {
pub fn new(
number: PortNumber,
end_time_utc: String,
status: jit_network_access_request_port::Status,
status_reason: jit_network_access_request_port::StatusReason,
) -> Self {
Self {
number,
allowed_source_address_prefix: None,
allowed_source_address_prefixes: Vec::new(),
end_time_utc,
status,
status_reason,
mapped_port: None,
}
}
}
pub mod jit_network_access_request_port {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Status {
Revoked,
Initiated,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum StatusReason {
Expired,
UserRequested,
NewerRequestInitiated,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JitNetworkAccessRequestVirtualMachine {
pub id: String,
pub ports: Vec<JitNetworkAccessRequestPort>,
}
impl JitNetworkAccessRequestVirtualMachine {
pub fn new(id: String, ports: Vec<JitNetworkAccessRequestPort>) -> Self {
Self { id, ports }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Kind {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
}
impl Kind {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ListCustomAlertRule {
#[serde(flatten)]
pub custom_alert_rule: CustomAlertRule,
#[serde(rename = "valueType", default, skip_serializing_if = "Option::is_none")]
pub value_type: Option<list_custom_alert_rule::ValueType>,
}
impl ListCustomAlertRule {
pub fn new(custom_alert_rule: CustomAlertRule) -> Self {
Self {
custom_alert_rule,
value_type: None,
}
}
}
pub mod list_custom_alert_rule {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ValueType {
IpCidr,
String,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct LocalUserNotAllowed {
#[serde(flatten)]
pub allowlist_custom_alert_rule: AllowlistCustomAlertRule,
}
impl LocalUserNotAllowed {
pub fn new(allowlist_custom_alert_rule: AllowlistCustomAlertRule) -> Self {
Self {
allowlist_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Location {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
}
impl Location {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct MdeOnboardingData {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<MdeOnboardingDataProperties>,
}
impl MdeOnboardingData {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct MdeOnboardingDataList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<MdeOnboardingData>,
}
impl MdeOnboardingDataList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct MdeOnboardingDataProperties {
#[serde(rename = "onboardingPackageWindows", default, skip_serializing_if = "Option::is_none")]
pub onboarding_package_windows: Option<String>,
#[serde(rename = "onboardingPackageLinux", default, skip_serializing_if = "Option::is_none")]
pub onboarding_package_linux: Option<String>,
}
impl MdeOnboardingDataProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MqttC2dMessagesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl MqttC2dMessagesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MqttC2dRejectedMessagesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl MqttC2dRejectedMessagesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct MqttD2cMessagesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl MqttD2cMessagesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Operation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub origin: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub display: Option<OperationDisplay>,
}
impl Operation {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct OperationDisplay {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provider: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resource: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operation: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
impl OperationDisplay {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct OperationList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Operation>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl OperationList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct PathRecommendation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<RecommendationAction>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<RecommendationType>,
#[serde(rename = "publisherInfo", default, skip_serializing_if = "Option::is_none")]
pub publisher_info: Option<PublisherInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub common: Option<bool>,
#[serde(rename = "userSids", default, skip_serializing_if = "Vec::is_empty")]
pub user_sids: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub usernames: Vec<UserRecommendation>,
#[serde(rename = "fileType", default, skip_serializing_if = "Option::is_none")]
pub file_type: Option<FileType>,
#[serde(rename = "configurationStatus", default, skip_serializing_if = "Option::is_none")]
pub configuration_status: Option<ConfigurationStatus>,
}
impl PathRecommendation {
pub fn new() -> Self {
Self::default()
}
}
pub type PathRecommendations = Vec<PathRecommendation>;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum PermissionProperty {
#[serde(rename = "AWS::AWSSecurityHubReadOnlyAccess")]
AwsAwsSecurityHubReadOnlyAccess,
#[serde(rename = "AWS::SecurityAudit")]
AwsSecurityAudit,
#[serde(rename = "AWS::AmazonSSMAutomationRole")]
AwsAmazonSsmAutomationRole,
#[serde(rename = "GCP::Security Center Admin Viewer")]
GcpSecurityCenterAdminViewer,
}
pub type PortNumber = i64;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Pricing {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<PricingProperties>,
}
impl Pricing {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PricingList {
pub value: Vec<Pricing>,
}
impl PricingList {
pub fn new(value: Vec<Pricing>) -> Self {
Self { value }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PricingProperties {
#[serde(rename = "pricingTier")]
pub pricing_tier: pricing_properties::PricingTier,
#[serde(rename = "freeTrialRemainingTime", default, skip_serializing_if = "Option::is_none")]
pub free_trial_remaining_time: Option<String>,
}
impl PricingProperties {
pub fn new(pricing_tier: pricing_properties::PricingTier) -> Self {
Self {
pricing_tier,
free_trial_remaining_time: None,
}
}
}
pub mod pricing_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum PricingTier {
Free,
Standard,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ProcessNotAllowed {
#[serde(flatten)]
pub allowlist_custom_alert_rule: AllowlistCustomAlertRule,
}
impl ProcessNotAllowed {
pub fn new(allowlist_custom_alert_rule: AllowlistCustomAlertRule) -> Self {
Self {
allowlist_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ProtectionMode {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub exe: Option<EnforcementMode>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub msi: Option<EnforcementMode>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub script: Option<EnforcementMode>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub executable: Option<EnforcementMode>,
}
impl ProtectionMode {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ProxyServerProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub port: Option<String>,
}
impl ProxyServerProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct PublisherInfo {
#[serde(rename = "publisherName", default, skip_serializing_if = "Option::is_none")]
pub publisher_name: Option<String>,
#[serde(rename = "productName", default, skip_serializing_if = "Option::is_none")]
pub product_name: Option<String>,
#[serde(rename = "binaryName", default, skip_serializing_if = "Option::is_none")]
pub binary_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
impl PublisherInfo {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct QueryCheck {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(rename = "expectedResult", default, skip_serializing_if = "Vec::is_empty")]
pub expected_result: Vec<Vec<String>>,
#[serde(rename = "columnNames", default, skip_serializing_if = "Vec::is_empty")]
pub column_names: Vec<String>,
}
impl QueryCheck {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct QueuePurgesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl QueuePurgesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum RecommendationAction {
Recommended,
Add,
Remove,
}
pub type RecommendationConfigurationList = Vec<RecommendationConfigurationProperties>;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RecommendationConfigurationProperties {
#[serde(rename = "recommendationType")]
pub recommendation_type: recommendation_configuration_properties::RecommendationType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
pub status: recommendation_configuration_properties::Status,
}
impl RecommendationConfigurationProperties {
pub fn new(
recommendation_type: recommendation_configuration_properties::RecommendationType,
status: recommendation_configuration_properties::Status,
) -> Self {
Self {
recommendation_type,
name: None,
status,
}
}
}
pub mod recommendation_configuration_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum RecommendationType {
#[serde(rename = "IoT_ACRAuthentication")]
IoTAcrAuthentication,
#[serde(rename = "IoT_AgentSendsUnutilizedMessages")]
IoTAgentSendsUnutilizedMessages,
#[serde(rename = "IoT_Baseline")]
IoTBaseline,
#[serde(rename = "IoT_EdgeHubMemOptimize")]
IoTEdgeHubMemOptimize,
#[serde(rename = "IoT_EdgeLoggingOptions")]
IoTEdgeLoggingOptions,
#[serde(rename = "IoT_InconsistentModuleSettings")]
IoTInconsistentModuleSettings,
#[serde(rename = "IoT_InstallAgent")]
IoTInstallAgent,
#[serde(rename = "IoT_IPFilter_DenyAll")]
IoTIpFilterDenyAll,
#[serde(rename = "IoT_IPFilter_PermissiveRule")]
IoTIpFilterPermissiveRule,
#[serde(rename = "IoT_OpenPorts")]
IoTOpenPorts,
#[serde(rename = "IoT_PermissiveFirewallPolicy")]
IoTPermissiveFirewallPolicy,
#[serde(rename = "IoT_PermissiveInputFirewallRules")]
IoTPermissiveInputFirewallRules,
#[serde(rename = "IoT_PermissiveOutputFirewallRules")]
IoTPermissiveOutputFirewallRules,
#[serde(rename = "IoT_PrivilegedDockerOptions")]
IoTPrivilegedDockerOptions,
#[serde(rename = "IoT_SharedCredentials")]
IoTSharedCredentials,
#[serde(rename = "IoT_VulnerableTLSCipherSuite")]
IoTVulnerableTlsCipherSuite,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Status {
Disabled,
Enabled,
}
impl Default for Status {
fn default() -> Self {
Self::Enabled
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum RecommendationStatus {
Recommended,
NotRecommended,
NotAvailable,
NoStatus,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum RecommendationType {
File,
FileHash,
PublisherSignature,
ProductSignature,
BinarySignature,
VersionAndAboveSignature,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RegulatoryComplianceAssessment {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<RegulatoryComplianceAssessmentProperties>,
}
impl RegulatoryComplianceAssessment {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RegulatoryComplianceAssessmentList {
pub value: Vec<RegulatoryComplianceAssessment>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl RegulatoryComplianceAssessmentList {
pub fn new(value: Vec<RegulatoryComplianceAssessment>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RegulatoryComplianceAssessmentProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "assessmentType", default, skip_serializing_if = "Option::is_none")]
pub assessment_type: Option<String>,
#[serde(rename = "assessmentDetailsLink", default, skip_serializing_if = "Option::is_none")]
pub assessment_details_link: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<regulatory_compliance_assessment_properties::State>,
#[serde(rename = "passedResources", default, skip_serializing_if = "Option::is_none")]
pub passed_resources: Option<i64>,
#[serde(rename = "failedResources", default, skip_serializing_if = "Option::is_none")]
pub failed_resources: Option<i64>,
#[serde(rename = "skippedResources", default, skip_serializing_if = "Option::is_none")]
pub skipped_resources: Option<i64>,
#[serde(rename = "unsupportedResources", default, skip_serializing_if = "Option::is_none")]
pub unsupported_resources: Option<i64>,
}
impl RegulatoryComplianceAssessmentProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod regulatory_compliance_assessment_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum State {
Passed,
Failed,
Skipped,
Unsupported,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RegulatoryComplianceControl {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<RegulatoryComplianceControlProperties>,
}
impl RegulatoryComplianceControl {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RegulatoryComplianceControlList {
pub value: Vec<RegulatoryComplianceControl>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl RegulatoryComplianceControlList {
pub fn new(value: Vec<RegulatoryComplianceControl>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RegulatoryComplianceControlProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<regulatory_compliance_control_properties::State>,
#[serde(rename = "passedAssessments", default, skip_serializing_if = "Option::is_none")]
pub passed_assessments: Option<i64>,
#[serde(rename = "failedAssessments", default, skip_serializing_if = "Option::is_none")]
pub failed_assessments: Option<i64>,
#[serde(rename = "skippedAssessments", default, skip_serializing_if = "Option::is_none")]
pub skipped_assessments: Option<i64>,
}
impl RegulatoryComplianceControlProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod regulatory_compliance_control_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum State {
Passed,
Failed,
Skipped,
Unsupported,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RegulatoryComplianceStandard {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<RegulatoryComplianceStandardProperties>,
}
impl RegulatoryComplianceStandard {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct RegulatoryComplianceStandardList {
pub value: Vec<RegulatoryComplianceStandard>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl RegulatoryComplianceStandardList {
pub fn new(value: Vec<RegulatoryComplianceStandard>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RegulatoryComplianceStandardProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<regulatory_compliance_standard_properties::State>,
#[serde(rename = "passedControls", default, skip_serializing_if = "Option::is_none")]
pub passed_controls: Option<i64>,
#[serde(rename = "failedControls", default, skip_serializing_if = "Option::is_none")]
pub failed_controls: Option<i64>,
#[serde(rename = "skippedControls", default, skip_serializing_if = "Option::is_none")]
pub skipped_controls: Option<i64>,
#[serde(rename = "unsupportedControls", default, skip_serializing_if = "Option::is_none")]
pub unsupported_controls: Option<i64>,
}
impl RegulatoryComplianceStandardProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod regulatory_compliance_standard_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum State {
Passed,
Failed,
Skipped,
Unsupported,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Remediation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub scripts: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub automated: Option<bool>,
#[serde(rename = "portalLink", default, skip_serializing_if = "Option::is_none")]
pub portal_link: Option<String>,
}
impl Remediation {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Resource {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
}
impl Resource {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ResourceDetails {
pub source: resource_details::Source,
}
impl ResourceDetails {
pub fn new(source: resource_details::Source) -> Self {
Self { source }
}
}
pub mod resource_details {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Source {
Azure,
OnPremise,
OnPremiseSql,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Rule {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub direction: Option<rule::Direction>,
#[serde(rename = "destinationPort", default, skip_serializing_if = "Option::is_none")]
pub destination_port: Option<PortNumber>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub protocols: Vec<String>,
#[serde(rename = "ipAddresses", default, skip_serializing_if = "Vec::is_empty")]
pub ip_addresses: Vec<String>,
}
impl Rule {
pub fn new() -> Self {
Self::default()
}
}
pub mod rule {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Direction {
Inbound,
Outbound,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RuleResults {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<RuleResultsProperties>,
}
impl RuleResults {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RuleResultsInput {
#[serde(rename = "latestScan", default, skip_serializing_if = "Option::is_none")]
pub latest_scan: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub results: Vec<Vec<String>>,
}
impl RuleResultsInput {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RuleResultsProperties {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub results: Vec<Vec<String>>,
}
impl RuleResultsProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum RuleSeverity {
High,
Medium,
Low,
Informational,
Obsolete,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum RuleStatus {
NonFinding,
Finding,
InternalError,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum RuleType {
Binary,
BaselineExpected,
PositiveList,
NegativeList,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RulesResults {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<RuleResults>,
}
impl RulesResults {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct RulesResultsInput {
#[serde(rename = "latestScan", default, skip_serializing_if = "Option::is_none")]
pub latest_scan: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub results: Option<serde_json::Value>,
}
impl RulesResultsInput {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Scan {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<ScanProperties>,
}
impl Scan {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ScanProperties {
#[serde(rename = "triggerType", default, skip_serializing_if = "Option::is_none")]
pub trigger_type: Option<ScanTriggerType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<ScanState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub server: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub database: Option<String>,
#[serde(rename = "sqlVersion", default, skip_serializing_if = "Option::is_none")]
pub sql_version: Option<String>,
#[serde(rename = "startTime", default, skip_serializing_if = "Option::is_none")]
pub start_time: Option<String>,
#[serde(rename = "endTime", default, skip_serializing_if = "Option::is_none")]
pub end_time: Option<String>,
#[serde(rename = "highSeverityFailedRulesCount", default, skip_serializing_if = "Option::is_none")]
pub high_severity_failed_rules_count: Option<i32>,
#[serde(rename = "mediumSeverityFailedRulesCount", default, skip_serializing_if = "Option::is_none")]
pub medium_severity_failed_rules_count: Option<i32>,
#[serde(rename = "lowSeverityFailedRulesCount", default, skip_serializing_if = "Option::is_none")]
pub low_severity_failed_rules_count: Option<i32>,
#[serde(rename = "totalPassedRulesCount", default, skip_serializing_if = "Option::is_none")]
pub total_passed_rules_count: Option<i32>,
#[serde(rename = "totalFailedRulesCount", default, skip_serializing_if = "Option::is_none")]
pub total_failed_rules_count: Option<i32>,
#[serde(rename = "totalRulesCount", default, skip_serializing_if = "Option::is_none")]
pub total_rules_count: Option<i32>,
#[serde(rename = "isBaselineApplied", default, skip_serializing_if = "Option::is_none")]
pub is_baseline_applied: Option<bool>,
}
impl ScanProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ScanResult {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<ScanResultProperties>,
}
impl ScanResult {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ScanResultProperties {
#[serde(rename = "ruleId", default, skip_serializing_if = "Option::is_none")]
pub rule_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<RuleStatus>,
#[serde(rename = "isTrimmed", default, skip_serializing_if = "Option::is_none")]
pub is_trimmed: Option<bool>,
#[serde(rename = "queryResults", default, skip_serializing_if = "Vec::is_empty")]
pub query_results: Vec<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub remediation: Option<Remediation>,
#[serde(rename = "baselineAdjustedResult", default, skip_serializing_if = "Option::is_none")]
pub baseline_adjusted_result: Option<BaselineAdjustedResult>,
#[serde(rename = "ruleMetadata", default, skip_serializing_if = "Option::is_none")]
pub rule_metadata: Option<VaRule>,
}
impl ScanResultProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ScanResults {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<ScanResult>,
}
impl ScanResults {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ScanState {
Failed,
FailedToRun,
InProgress,
Passed,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum ScanTriggerType {
OnDemand,
Recurring,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Scans {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Scan>,
}
impl Scans {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ScopeElement {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub field: Option<String>,
}
impl ScopeElement {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ScoreDetails {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub current: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub percentage: Option<f64>,
}
impl ScoreDetails {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreControlDefinitionItem {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<SecureScoreControlDefinitionItemProperties>,
}
impl SecureScoreControlDefinitionItem {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreControlDefinitionItemProperties {
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "maxScore", default, skip_serializing_if = "Option::is_none")]
pub max_score: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<SecureScoreControlDefinitionSource>,
#[serde(rename = "assessmentDefinitions", default, skip_serializing_if = "Option::is_none")]
pub assessment_definitions: Option<AzureResourceLinks>,
}
impl SecureScoreControlDefinitionItemProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreControlDefinitionSource {
#[serde(rename = "sourceType", default, skip_serializing_if = "Option::is_none")]
pub source_type: Option<secure_score_control_definition_source::SourceType>,
}
impl SecureScoreControlDefinitionSource {
pub fn new() -> Self {
Self::default()
}
}
pub mod secure_score_control_definition_source {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum SourceType {
BuiltIn,
Custom,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreControlDetails {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<SecureScoreControlScoreDetails>,
}
impl SecureScoreControlDetails {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreControlList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<SecureScoreControlDetails>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SecureScoreControlList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreControlScore {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub current: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub percentage: Option<f64>,
}
impl SecureScoreControlScore {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreControlScoreDetails {
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub score: Option<ScoreDetails>,
#[serde(rename = "healthyResourceCount", default, skip_serializing_if = "Option::is_none")]
pub healthy_resource_count: Option<i32>,
#[serde(rename = "unhealthyResourceCount", default, skip_serializing_if = "Option::is_none")]
pub unhealthy_resource_count: Option<i32>,
#[serde(rename = "notApplicableResourceCount", default, skip_serializing_if = "Option::is_none")]
pub not_applicable_resource_count: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub weight: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub definition: Option<SecureScoreControlDefinitionItem>,
}
impl SecureScoreControlScoreDetails {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreItem {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<SecureScoreItemProperties>,
}
impl SecureScoreItem {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreItemProperties {
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub score: Option<ScoreDetails>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub weight: Option<i64>,
}
impl SecureScoreItemProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoresList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<SecureScoreItem>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SecureScoresList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecurityConnector {
#[serde(flatten)]
pub tracked_resource: TrackedResource,
#[serde(rename = "systemData", default, skip_serializing_if = "Option::is_none")]
pub system_data: Option<SystemData>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<SecurityConnectorProperties>,
}
impl SecurityConnector {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecurityConnectorProperties {
#[serde(rename = "hierarchyIdentifier", default, skip_serializing_if = "Option::is_none")]
pub hierarchy_identifier: Option<String>,
#[serde(rename = "cloudName", default, skip_serializing_if = "Option::is_none")]
pub cloud_name: Option<security_connector_properties::CloudName>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub offerings: Vec<CloudOffering>,
#[serde(rename = "organizationalData", default, skip_serializing_if = "Option::is_none")]
pub organizational_data: Option<security_connector_properties::OrganizationalData>,
}
impl SecurityConnectorProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod security_connector_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum CloudName {
Azure,
#[serde(rename = "AWS")]
Aws,
#[serde(rename = "GCP")]
Gcp,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct OrganizationalData {
#[serde(rename = "organizationMembershipType", default, skip_serializing_if = "Option::is_none")]
pub organization_membership_type: Option<organizational_data::OrganizationMembershipType>,
#[serde(rename = "parentHierarchyId", default, skip_serializing_if = "Option::is_none")]
pub parent_hierarchy_id: Option<String>,
#[serde(rename = "stacksetName", default, skip_serializing_if = "Option::is_none")]
pub stackset_name: Option<String>,
#[serde(rename = "excludedAccountIds", default, skip_serializing_if = "Vec::is_empty")]
pub excluded_account_ids: Vec<String>,
}
impl OrganizationalData {
pub fn new() -> Self {
Self::default()
}
}
pub mod organizational_data {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum OrganizationMembershipType {
Member,
Organization,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SecurityConnectorsList {
pub value: Vec<SecurityConnector>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SecurityConnectorsList {
pub fn new(value: Vec<SecurityConnector>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecurityContact {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<SecurityContactProperties>,
}
impl SecurityContact {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecurityContactList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<SecurityContact>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SecurityContactList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SecurityContactProperties {
pub email: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(rename = "alertNotifications")]
pub alert_notifications: security_contact_properties::AlertNotifications,
#[serde(rename = "alertsToAdmins")]
pub alerts_to_admins: security_contact_properties::AlertsToAdmins,
}
impl SecurityContactProperties {
pub fn new(
email: String,
alert_notifications: security_contact_properties::AlertNotifications,
alerts_to_admins: security_contact_properties::AlertsToAdmins,
) -> Self {
Self {
email,
phone: None,
alert_notifications,
alerts_to_admins,
}
}
}
pub mod security_contact_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum AlertNotifications {
On,
Off,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum AlertsToAdmins {
On,
Off,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecuritySubAssessment {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<SecuritySubAssessmentProperties>,
}
impl SecuritySubAssessment {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecuritySubAssessmentList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<SecuritySubAssessment>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SecuritySubAssessmentList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecuritySubAssessmentProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<SubAssessmentStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub remediation: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub impact: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "timeGenerated", default, skip_serializing_if = "Option::is_none")]
pub time_generated: Option<String>,
#[serde(rename = "resourceDetails", default, skip_serializing_if = "Option::is_none")]
pub resource_details: Option<ResourceDetails>,
#[serde(rename = "additionalData", default, skip_serializing_if = "Option::is_none")]
pub additional_data: Option<AdditionalData>,
}
impl SecuritySubAssessmentProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecurityTask {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<SecurityTaskProperties>,
}
impl SecurityTask {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecurityTaskList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<SecurityTask>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SecurityTaskList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecurityTaskParameters {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
impl SecurityTaskParameters {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecurityTaskProperties {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(rename = "creationTimeUtc", default, skip_serializing_if = "Option::is_none")]
pub creation_time_utc: Option<String>,
#[serde(rename = "securityTaskParameters", default, skip_serializing_if = "Option::is_none")]
pub security_task_parameters: Option<SecurityTaskParameters>,
#[serde(rename = "lastStateChangeTimeUtc", default, skip_serializing_if = "Option::is_none")]
pub last_state_change_time_utc: Option<String>,
#[serde(rename = "subState", default, skip_serializing_if = "Option::is_none")]
pub sub_state: Option<String>,
}
impl SecurityTaskProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SensitivityLabel {
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rank: Option<sensitivity_label::Rank>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
}
impl SensitivityLabel {
pub fn new() -> Self {
Self::default()
}
}
pub mod sensitivity_label {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Rank {
None,
Low,
Medium,
High,
Critical,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ServerVulnerabilityProperties {
#[serde(flatten)]
pub additional_data: AdditionalData,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cvss: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub patchable: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub cve: Vec<Cve>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub threat: Option<String>,
#[serde(rename = "publishedTime", default, skip_serializing_if = "Option::is_none")]
pub published_time: Option<String>,
#[serde(rename = "vendorReferences", default, skip_serializing_if = "Vec::is_empty")]
pub vendor_references: Vec<VendorReference>,
}
impl ServerVulnerabilityProperties {
pub fn new(additional_data: AdditionalData) -> Self {
Self {
additional_data,
type_: None,
cvss: None,
patchable: None,
cve: Vec::new(),
threat: None,
published_time: None,
vendor_references: Vec::new(),
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ServicePrincipalProperties {
#[serde(rename = "applicationId", default, skip_serializing_if = "Option::is_none")]
pub application_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub secret: Option<String>,
}
impl ServicePrincipalProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Setting {
#[serde(flatten)]
pub resource: Resource,
pub kind: setting::Kind,
}
impl Setting {
pub fn new(kind: setting::Kind) -> Self {
Self {
resource: Resource::default(),
kind,
}
}
}
pub mod setting {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Kind {
DataExportSetting,
AlertSuppressionSetting,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SettingsList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Setting>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SettingsList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Software {
#[serde(flatten)]
pub resource: Resource,
pub properties: SoftwareProperties,
}
impl Software {
pub fn new(properties: SoftwareProperties) -> Self {
Self {
resource: Resource::default(),
properties,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SoftwareProperties {
#[serde(rename = "deviceId", default, skip_serializing_if = "Option::is_none")]
pub device_id: Option<String>,
#[serde(rename = "osPlatform", default, skip_serializing_if = "Option::is_none")]
pub os_platform: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vendor: Option<String>,
#[serde(rename = "softwareName", default, skip_serializing_if = "Option::is_none")]
pub software_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(rename = "endOfSupportStatus", default, skip_serializing_if = "Option::is_none")]
pub end_of_support_status: Option<software_properties::EndOfSupportStatus>,
#[serde(rename = "endOfSupportDate", default, skip_serializing_if = "Option::is_none")]
pub end_of_support_date: Option<String>,
#[serde(rename = "numberOfKnownVulnerabilities", default, skip_serializing_if = "Option::is_none")]
pub number_of_known_vulnerabilities: Option<i32>,
#[serde(rename = "firstSeenAt", default, skip_serializing_if = "Option::is_none")]
pub first_seen_at: Option<String>,
}
impl SoftwareProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod software_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum EndOfSupportStatus {
None,
#[serde(rename = "noLongerSupported")]
NoLongerSupported,
#[serde(rename = "versionNoLongerSupported")]
VersionNoLongerSupported,
#[serde(rename = "upcomingNoLongerSupported")]
UpcomingNoLongerSupported,
#[serde(rename = "upcomingVersionNoLongerSupported")]
UpcomingVersionNoLongerSupported,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SoftwaresList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Software>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SoftwaresList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum SourceSystem {
#[serde(rename = "Azure_AppLocker")]
AzureAppLocker,
#[serde(rename = "Azure_AuditD")]
AzureAuditD,
#[serde(rename = "NonAzure_AppLocker")]
NonAzureAppLocker,
#[serde(rename = "NonAzure_AuditD")]
NonAzureAuditD,
None,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SqlServerVulnerabilityProperties {
#[serde(flatten)]
pub additional_data: AdditionalData,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
}
impl SqlServerVulnerabilityProperties {
pub fn new(additional_data: AdditionalData) -> Self {
Self {
additional_data,
type_: None,
query: None,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SubAssessmentStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<sub_assessment_status::Code>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cause: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub severity: Option<sub_assessment_status::Severity>,
}
impl SubAssessmentStatus {
pub fn new() -> Self {
Self::default()
}
}
pub mod sub_assessment_status {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Code {
Healthy,
Unhealthy,
NotApplicable,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Severity {
Low,
Medium,
High,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SuppressionAlertsScope {
#[serde(rename = "allOf")]
pub all_of: Vec<ScopeElement>,
}
impl SuppressionAlertsScope {
pub fn new(all_of: Vec<ScopeElement>) -> Self {
Self { all_of }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct Tags {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tags: Option<serde_json::Value>,
}
impl Tags {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct TagsResource {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tags: Option<serde_json::Value>,
}
impl TagsResource {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ThresholdCustomAlertRule {
#[serde(flatten)]
pub custom_alert_rule: CustomAlertRule,
#[serde(rename = "minThreshold")]
pub min_threshold: i64,
#[serde(rename = "maxThreshold")]
pub max_threshold: i64,
}
impl ThresholdCustomAlertRule {
pub fn new(custom_alert_rule: CustomAlertRule, min_threshold: i64, max_threshold: i64) -> Self {
Self {
custom_alert_rule,
min_threshold,
max_threshold,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TimeWindowCustomAlertRule {
#[serde(flatten)]
pub threshold_custom_alert_rule: ThresholdCustomAlertRule,
#[serde(rename = "timeWindowSize")]
pub time_window_size: String,
}
impl TimeWindowCustomAlertRule {
pub fn new(threshold_custom_alert_rule: ThresholdCustomAlertRule, time_window_size: String) -> Self {
Self {
threshold_custom_alert_rule,
time_window_size,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct TopologyList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<TopologyResource>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl TopologyList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct TopologyResource {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub location: Location,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<TopologyResourceProperties>,
}
impl TopologyResource {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct TopologyResourceProperties {
#[serde(rename = "calculatedDateTime", default, skip_serializing_if = "Option::is_none")]
pub calculated_date_time: Option<String>,
#[serde(rename = "topologyResources", default, skip_serializing_if = "Vec::is_empty")]
pub topology_resources: Vec<TopologySingleResource>,
}
impl TopologyResourceProperties {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct TopologySingleResource {
#[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")]
pub resource_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub severity: Option<String>,
#[serde(rename = "recommendationsExist", default, skip_serializing_if = "Option::is_none")]
pub recommendations_exist: Option<bool>,
#[serde(rename = "networkZones", default, skip_serializing_if = "Option::is_none")]
pub network_zones: Option<String>,
#[serde(rename = "topologyScore", default, skip_serializing_if = "Option::is_none")]
pub topology_score: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub parents: Vec<TopologySingleResourceParent>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub children: Vec<TopologySingleResourceChild>,
}
impl TopologySingleResource {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct TopologySingleResourceChild {
#[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")]
pub resource_id: Option<String>,
}
impl TopologySingleResourceChild {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct TopologySingleResourceParent {
#[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")]
pub resource_id: Option<String>,
}
impl TopologySingleResourceParent {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct TrackedResource {
#[serde(flatten)]
pub resource: Resource,
#[serde(flatten)]
pub azure_tracked_resource_location: AzureTrackedResourceLocation,
#[serde(flatten)]
pub kind: Kind,
#[serde(flatten)]
pub e_tag: ETag,
#[serde(flatten)]
pub tags: Tags,
}
impl TrackedResource {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TwinUpdatesNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl TwinUpdatesNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UnauthorizedOperationsNotInAllowedRange {
#[serde(flatten)]
pub time_window_custom_alert_rule: TimeWindowCustomAlertRule,
}
impl UnauthorizedOperationsNotInAllowedRange {
pub fn new(time_window_custom_alert_rule: TimeWindowCustomAlertRule) -> Self {
Self {
time_window_custom_alert_rule,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct UpdateIotSecuritySolutionData {
#[serde(flatten)]
pub tags_resource: TagsResource,
#[serde(rename = "userDefinedResources", default, skip_serializing_if = "Option::is_none")]
pub user_defined_resources: Option<UserDefinedResourcesProperties>,
#[serde(rename = "recommendationsConfiguration", default, skip_serializing_if = "Option::is_none")]
pub recommendations_configuration: Option<RecommendationConfigurationList>,
}
impl UpdateIotSecuritySolutionData {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct UserDefinedResourcesProperties {
pub query: String,
#[serde(rename = "querySubscriptions")]
pub query_subscriptions: Vec<String>,
}
impl UserDefinedResourcesProperties {
pub fn new(query: String, query_subscriptions: Vec<String>) -> Self {
Self {
query,
query_subscriptions,
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct UserRecommendation {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub username: Option<String>,
#[serde(rename = "recommendationAction", default, skip_serializing_if = "Option::is_none")]
pub recommendation_action: Option<RecommendationAction>,
}
impl UserRecommendation {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct VaRule {
#[serde(rename = "ruleId", default, skip_serializing_if = "Option::is_none")]
pub rule_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub severity: Option<RuleSeverity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "ruleType", default, skip_serializing_if = "Option::is_none")]
pub rule_type: Option<RuleType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "queryCheck", default, skip_serializing_if = "Option::is_none")]
pub query_check: Option<QueryCheck>,
#[serde(rename = "benchmarkReferences", default, skip_serializing_if = "Vec::is_empty")]
pub benchmark_references: Vec<BenchmarkReference>,
}
impl VaRule {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct VendorReference {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link: Option<String>,
}
impl VendorReference {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct VmRecommendation {
#[serde(rename = "configurationStatus", default, skip_serializing_if = "Option::is_none")]
pub configuration_status: Option<ConfigurationStatus>,
#[serde(rename = "recommendationAction", default, skip_serializing_if = "Option::is_none")]
pub recommendation_action: Option<RecommendationAction>,
#[serde(rename = "resourceId", default, skip_serializing_if = "Option::is_none")]
pub resource_id: Option<VmResourceId>,
#[serde(rename = "enforcementSupport", default, skip_serializing_if = "Option::is_none")]
pub enforcement_support: Option<EnforcementSupport>,
}
impl VmRecommendation {
pub fn new() -> Self {
Self::default()
}
}
pub type VmRecommendations = Vec<VmRecommendation>;
pub type VmResourceId = String;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct WorkspaceSetting {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<WorkspaceSettingProperties>,
}
impl WorkspaceSetting {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct WorkspaceSettingList {
pub value: Vec<WorkspaceSetting>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl WorkspaceSettingList {
pub fn new(value: Vec<WorkspaceSetting>) -> Self {
Self { value, next_link: None }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct WorkspaceSettingProperties {
#[serde(rename = "workspaceId")]
pub workspace_id: String,
pub scope: String,
}
impl WorkspaceSettingProperties {
pub fn new(workspace_id: String, scope: String) -> Self {
Self { workspace_id, scope }
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloudOffering {
#[serde(rename = "offeringType")]
pub offering_type: cloud_offering::OfferingType,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
impl CloudOffering {
pub fn new(offering_type: cloud_offering::OfferingType) -> Self {
Self {
offering_type,
description: None,
}
}
}
pub mod cloud_offering {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum OfferingType {
CspmMonitorAws,
DefenderForContainersAws,
DefenderForServersAws,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CspmMonitorAwsOffering {
#[serde(flatten)]
pub cloud_offering: CloudOffering,
#[serde(rename = "nativeCloudConnection", default, skip_serializing_if = "Option::is_none")]
pub native_cloud_connection: Option<cspm_monitor_aws_offering::NativeCloudConnection>,
}
impl CspmMonitorAwsOffering {
pub fn new(cloud_offering: CloudOffering) -> Self {
Self {
cloud_offering,
native_cloud_connection: None,
}
}
}
pub mod cspm_monitor_aws_offering {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct NativeCloudConnection {
#[serde(rename = "cloudRoleArn", default, skip_serializing_if = "Option::is_none")]
pub cloud_role_arn: Option<String>,
}
impl NativeCloudConnection {
pub fn new() -> Self {
Self::default()
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomAssessmentAutomation {
#[serde(flatten)]
pub resource: Resource,
#[serde(rename = "systemData", default, skip_serializing_if = "Option::is_none")]
pub system_data: Option<SystemData>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<CustomAssessmentAutomationProperties>,
}
impl CustomAssessmentAutomation {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomAssessmentAutomationProperties {
#[serde(rename = "compressedQuery", default, skip_serializing_if = "Option::is_none")]
pub compressed_query: Option<String>,
#[serde(rename = "supportedCloud", default, skip_serializing_if = "Option::is_none")]
pub supported_cloud: Option<custom_assessment_automation_properties::SupportedCloud>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub severity: Option<custom_assessment_automation_properties::Severity>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "remediationDescription", default, skip_serializing_if = "Option::is_none")]
pub remediation_description: Option<String>,
#[serde(rename = "assessmentKey", default, skip_serializing_if = "Option::is_none")]
pub assessment_key: Option<String>,
}
impl CustomAssessmentAutomationProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod custom_assessment_automation_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum SupportedCloud {
#[serde(rename = "AWS")]
Aws,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Severity {
High,
Medium,
Low,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomAssessmentAutomationRequest {
#[serde(flatten)]
pub resource: Resource,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<CustomAssessmentAutomationRequestProperties>,
}
impl CustomAssessmentAutomationRequest {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomAssessmentAutomationRequestProperties {
#[serde(rename = "compressedQuery", default, skip_serializing_if = "Option::is_none")]
pub compressed_query: Option<String>,
#[serde(rename = "supportedCloud", default, skip_serializing_if = "Option::is_none")]
pub supported_cloud: Option<custom_assessment_automation_request_properties::SupportedCloud>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub severity: Option<custom_assessment_automation_request_properties::Severity>,
#[serde(rename = "displayName", default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "remediationDescription", default, skip_serializing_if = "Option::is_none")]
pub remediation_description: Option<String>,
}
impl CustomAssessmentAutomationRequestProperties {
pub fn new() -> Self {
Self::default()
}
}
pub mod custom_assessment_automation_request_properties {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum SupportedCloud {
#[serde(rename = "AWS")]
Aws,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Severity {
High,
Medium,
Low,
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CustomAssessmentAutomationsListResult {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<CustomAssessmentAutomation>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl CustomAssessmentAutomationsListResult {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DefenderForContainersAwsOffering {
#[serde(flatten)]
pub cloud_offering: CloudOffering,
#[serde(rename = "kubernetesService", default, skip_serializing_if = "Option::is_none")]
pub kubernetes_service: Option<defender_for_containers_aws_offering::KubernetesService>,
#[serde(rename = "kubernetesScubaReader", default, skip_serializing_if = "Option::is_none")]
pub kubernetes_scuba_reader: Option<defender_for_containers_aws_offering::KubernetesScubaReader>,
#[serde(rename = "cloudWatchToKinesis", default, skip_serializing_if = "Option::is_none")]
pub cloud_watch_to_kinesis: Option<defender_for_containers_aws_offering::CloudWatchToKinesis>,
#[serde(rename = "kinesisToS3", default, skip_serializing_if = "Option::is_none")]
pub kinesis_to_s3: Option<defender_for_containers_aws_offering::KinesisToS3>,
}
impl DefenderForContainersAwsOffering {
pub fn new(cloud_offering: CloudOffering) -> Self {
Self {
cloud_offering,
kubernetes_service: None,
kubernetes_scuba_reader: None,
cloud_watch_to_kinesis: None,
kinesis_to_s3: None,
}
}
}
pub mod defender_for_containers_aws_offering {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct KubernetesService {
#[serde(rename = "cloudRoleArn", default, skip_serializing_if = "Option::is_none")]
pub cloud_role_arn: Option<String>,
}
impl KubernetesService {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct KubernetesScubaReader {
#[serde(rename = "cloudRoleArn", default, skip_serializing_if = "Option::is_none")]
pub cloud_role_arn: Option<String>,
}
impl KubernetesScubaReader {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct CloudWatchToKinesis {
#[serde(rename = "cloudRoleArn", default, skip_serializing_if = "Option::is_none")]
pub cloud_role_arn: Option<String>,
}
impl CloudWatchToKinesis {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct KinesisToS3 {
#[serde(rename = "cloudRoleArn", default, skip_serializing_if = "Option::is_none")]
pub cloud_role_arn: Option<String>,
}
impl KinesisToS3 {
pub fn new() -> Self {
Self::default()
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DefenderForServersAwsOffering {
#[serde(flatten)]
pub cloud_offering: CloudOffering,
#[serde(rename = "defenderForServers", default, skip_serializing_if = "Option::is_none")]
pub defender_for_servers: Option<defender_for_servers_aws_offering::DefenderForServers>,
#[serde(rename = "arcAutoProvisioning", default, skip_serializing_if = "Option::is_none")]
pub arc_auto_provisioning: Option<defender_for_servers_aws_offering::ArcAutoProvisioning>,
}
impl DefenderForServersAwsOffering {
pub fn new(cloud_offering: CloudOffering) -> Self {
Self {
cloud_offering,
defender_for_servers: None,
arc_auto_provisioning: None,
}
}
}
pub mod defender_for_servers_aws_offering {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct DefenderForServers {
#[serde(rename = "cloudRoleArn", default, skip_serializing_if = "Option::is_none")]
pub cloud_role_arn: Option<String>,
}
impl DefenderForServers {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ArcAutoProvisioning {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(rename = "servicePrincipalSecretMetadata", default, skip_serializing_if = "Option::is_none")]
pub service_principal_secret_metadata: Option<arc_auto_provisioning::ServicePrincipalSecretMetadata>,
}
impl ArcAutoProvisioning {
pub fn new() -> Self {
Self::default()
}
}
pub mod arc_auto_provisioning {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct ServicePrincipalSecretMetadata {
#[serde(rename = "expiryDate", default, skip_serializing_if = "Option::is_none")]
pub expiry_date: Option<String>,
#[serde(rename = "parameterStoreRegion", default, skip_serializing_if = "Option::is_none")]
pub parameter_store_region: Option<String>,
#[serde(rename = "parameterNameInStore", default, skip_serializing_if = "Option::is_none")]
pub parameter_name_in_store: Option<String>,
}
impl ServicePrincipalSecretMetadata {
pub fn new() -> Self {
Self::default()
}
}
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SecureScoreControlDefinitionList {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub value: Vec<SecureScoreControlDefinitionItem>,
#[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl SecureScoreControlDefinitionList {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
pub struct SystemData {
#[serde(rename = "createdBy", default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
#[serde(rename = "createdByType", default, skip_serializing_if = "Option::is_none")]
pub created_by_type: Option<system_data::CreatedByType>,
#[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "lastModifiedBy", default, skip_serializing_if = "Option::is_none")]
pub last_modified_by: Option<String>,
#[serde(rename = "lastModifiedByType", default, skip_serializing_if = "Option::is_none")]
pub last_modified_by_type: Option<system_data::LastModifiedByType>,
#[serde(rename = "lastModifiedAt", default, skip_serializing_if = "Option::is_none")]
pub last_modified_at: Option<String>,
}
impl SystemData {
pub fn new() -> Self {
Self::default()
}
}
pub mod system_data {
use super::*;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum CreatedByType {
User,
Application,
ManagedIdentity,
Key,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum LastModifiedByType {
User,
Application,
ManagedIdentity,
Key,
}
}