/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace Shield { namespace Model { /** *

The details of a DDoS attack.

See Also:

AWS * API Reference

*/ class AttackDetail { public: AWS_SHIELD_API AttackDetail(); AWS_SHIELD_API AttackDetail(Aws::Utils::Json::JsonView jsonValue); AWS_SHIELD_API AttackDetail& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_SHIELD_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The unique identifier (ID) of the attack.

*/ inline const Aws::String& GetAttackId() const{ return m_attackId; } /** *

The unique identifier (ID) of the attack.

*/ inline bool AttackIdHasBeenSet() const { return m_attackIdHasBeenSet; } /** *

The unique identifier (ID) of the attack.

*/ inline void SetAttackId(const Aws::String& value) { m_attackIdHasBeenSet = true; m_attackId = value; } /** *

The unique identifier (ID) of the attack.

*/ inline void SetAttackId(Aws::String&& value) { m_attackIdHasBeenSet = true; m_attackId = std::move(value); } /** *

The unique identifier (ID) of the attack.

*/ inline void SetAttackId(const char* value) { m_attackIdHasBeenSet = true; m_attackId.assign(value); } /** *

The unique identifier (ID) of the attack.

*/ inline AttackDetail& WithAttackId(const Aws::String& value) { SetAttackId(value); return *this;} /** *

The unique identifier (ID) of the attack.

*/ inline AttackDetail& WithAttackId(Aws::String&& value) { SetAttackId(std::move(value)); return *this;} /** *

The unique identifier (ID) of the attack.

*/ inline AttackDetail& WithAttackId(const char* value) { SetAttackId(value); return *this;} /** *

The ARN (Amazon Resource Name) of the resource that was attacked.

*/ inline const Aws::String& GetResourceArn() const{ return m_resourceArn; } /** *

The ARN (Amazon Resource Name) of the resource that was attacked.

*/ inline bool ResourceArnHasBeenSet() const { return m_resourceArnHasBeenSet; } /** *

The ARN (Amazon Resource Name) of the resource that was attacked.

*/ inline void SetResourceArn(const Aws::String& value) { m_resourceArnHasBeenSet = true; m_resourceArn = value; } /** *

The ARN (Amazon Resource Name) of the resource that was attacked.

*/ inline void SetResourceArn(Aws::String&& value) { m_resourceArnHasBeenSet = true; m_resourceArn = std::move(value); } /** *

The ARN (Amazon Resource Name) of the resource that was attacked.

*/ inline void SetResourceArn(const char* value) { m_resourceArnHasBeenSet = true; m_resourceArn.assign(value); } /** *

The ARN (Amazon Resource Name) of the resource that was attacked.

*/ inline AttackDetail& WithResourceArn(const Aws::String& value) { SetResourceArn(value); return *this;} /** *

The ARN (Amazon Resource Name) of the resource that was attacked.

*/ inline AttackDetail& WithResourceArn(Aws::String&& value) { SetResourceArn(std::move(value)); return *this;} /** *

The ARN (Amazon Resource Name) of the resource that was attacked.

*/ inline AttackDetail& WithResourceArn(const char* value) { SetResourceArn(value); return *this;} /** *

If applicable, additional detail about the resource being attacked, for * example, IP address or URL.

*/ inline const Aws::Vector& GetSubResources() const{ return m_subResources; } /** *

If applicable, additional detail about the resource being attacked, for * example, IP address or URL.

*/ inline bool SubResourcesHasBeenSet() const { return m_subResourcesHasBeenSet; } /** *

If applicable, additional detail about the resource being attacked, for * example, IP address or URL.

*/ inline void SetSubResources(const Aws::Vector& value) { m_subResourcesHasBeenSet = true; m_subResources = value; } /** *

If applicable, additional detail about the resource being attacked, for * example, IP address or URL.

*/ inline void SetSubResources(Aws::Vector&& value) { m_subResourcesHasBeenSet = true; m_subResources = std::move(value); } /** *

If applicable, additional detail about the resource being attacked, for * example, IP address or URL.

*/ inline AttackDetail& WithSubResources(const Aws::Vector& value) { SetSubResources(value); return *this;} /** *

If applicable, additional detail about the resource being attacked, for * example, IP address or URL.

*/ inline AttackDetail& WithSubResources(Aws::Vector&& value) { SetSubResources(std::move(value)); return *this;} /** *

If applicable, additional detail about the resource being attacked, for * example, IP address or URL.

*/ inline AttackDetail& AddSubResources(const SubResourceSummary& value) { m_subResourcesHasBeenSet = true; m_subResources.push_back(value); return *this; } /** *

If applicable, additional detail about the resource being attacked, for * example, IP address or URL.

*/ inline AttackDetail& AddSubResources(SubResourceSummary&& value) { m_subResourcesHasBeenSet = true; m_subResources.push_back(std::move(value)); return *this; } /** *

The time the attack started, in Unix time in seconds.

*/ inline const Aws::Utils::DateTime& GetStartTime() const{ return m_startTime; } /** *

The time the attack started, in Unix time in seconds.

*/ inline bool StartTimeHasBeenSet() const { return m_startTimeHasBeenSet; } /** *

The time the attack started, in Unix time in seconds.

*/ inline void SetStartTime(const Aws::Utils::DateTime& value) { m_startTimeHasBeenSet = true; m_startTime = value; } /** *

The time the attack started, in Unix time in seconds.

*/ inline void SetStartTime(Aws::Utils::DateTime&& value) { m_startTimeHasBeenSet = true; m_startTime = std::move(value); } /** *

The time the attack started, in Unix time in seconds.

*/ inline AttackDetail& WithStartTime(const Aws::Utils::DateTime& value) { SetStartTime(value); return *this;} /** *

The time the attack started, in Unix time in seconds.

*/ inline AttackDetail& WithStartTime(Aws::Utils::DateTime&& value) { SetStartTime(std::move(value)); return *this;} /** *

The time the attack ended, in Unix time in seconds.

*/ inline const Aws::Utils::DateTime& GetEndTime() const{ return m_endTime; } /** *

The time the attack ended, in Unix time in seconds.

*/ inline bool EndTimeHasBeenSet() const { return m_endTimeHasBeenSet; } /** *

The time the attack ended, in Unix time in seconds.

*/ inline void SetEndTime(const Aws::Utils::DateTime& value) { m_endTimeHasBeenSet = true; m_endTime = value; } /** *

The time the attack ended, in Unix time in seconds.

*/ inline void SetEndTime(Aws::Utils::DateTime&& value) { m_endTimeHasBeenSet = true; m_endTime = std::move(value); } /** *

The time the attack ended, in Unix time in seconds.

*/ inline AttackDetail& WithEndTime(const Aws::Utils::DateTime& value) { SetEndTime(value); return *this;} /** *

The time the attack ended, in Unix time in seconds.

*/ inline AttackDetail& WithEndTime(Aws::Utils::DateTime&& value) { SetEndTime(std::move(value)); return *this;} /** *

List of counters that describe the attack for the specified time period.

*/ inline const Aws::Vector& GetAttackCounters() const{ return m_attackCounters; } /** *

List of counters that describe the attack for the specified time period.

*/ inline bool AttackCountersHasBeenSet() const { return m_attackCountersHasBeenSet; } /** *

List of counters that describe the attack for the specified time period.

*/ inline void SetAttackCounters(const Aws::Vector& value) { m_attackCountersHasBeenSet = true; m_attackCounters = value; } /** *

List of counters that describe the attack for the specified time period.

*/ inline void SetAttackCounters(Aws::Vector&& value) { m_attackCountersHasBeenSet = true; m_attackCounters = std::move(value); } /** *

List of counters that describe the attack for the specified time period.

*/ inline AttackDetail& WithAttackCounters(const Aws::Vector& value) { SetAttackCounters(value); return *this;} /** *

List of counters that describe the attack for the specified time period.

*/ inline AttackDetail& WithAttackCounters(Aws::Vector&& value) { SetAttackCounters(std::move(value)); return *this;} /** *

List of counters that describe the attack for the specified time period.

*/ inline AttackDetail& AddAttackCounters(const SummarizedCounter& value) { m_attackCountersHasBeenSet = true; m_attackCounters.push_back(value); return *this; } /** *

List of counters that describe the attack for the specified time period.

*/ inline AttackDetail& AddAttackCounters(SummarizedCounter&& value) { m_attackCountersHasBeenSet = true; m_attackCounters.push_back(std::move(value)); return *this; } /** *

The array of objects that provide details of the Shield event.

For * infrastructure layer events (L3 and L4 events), you can view metrics for top * contributors in Amazon CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide.

*/ inline const Aws::Vector& GetAttackProperties() const{ return m_attackProperties; } /** *

The array of objects that provide details of the Shield event.

For * infrastructure layer events (L3 and L4 events), you can view metrics for top * contributors in Amazon CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide.

*/ inline bool AttackPropertiesHasBeenSet() const { return m_attackPropertiesHasBeenSet; } /** *

The array of objects that provide details of the Shield event.

For * infrastructure layer events (L3 and L4 events), you can view metrics for top * contributors in Amazon CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide.

*/ inline void SetAttackProperties(const Aws::Vector& value) { m_attackPropertiesHasBeenSet = true; m_attackProperties = value; } /** *

The array of objects that provide details of the Shield event.

For * infrastructure layer events (L3 and L4 events), you can view metrics for top * contributors in Amazon CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide.

*/ inline void SetAttackProperties(Aws::Vector&& value) { m_attackPropertiesHasBeenSet = true; m_attackProperties = std::move(value); } /** *

The array of objects that provide details of the Shield event.

For * infrastructure layer events (L3 and L4 events), you can view metrics for top * contributors in Amazon CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide.

*/ inline AttackDetail& WithAttackProperties(const Aws::Vector& value) { SetAttackProperties(value); return *this;} /** *

The array of objects that provide details of the Shield event.

For * infrastructure layer events (L3 and L4 events), you can view metrics for top * contributors in Amazon CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide.

*/ inline AttackDetail& WithAttackProperties(Aws::Vector&& value) { SetAttackProperties(std::move(value)); return *this;} /** *

The array of objects that provide details of the Shield event.

For * infrastructure layer events (L3 and L4 events), you can view metrics for top * contributors in Amazon CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide.

*/ inline AttackDetail& AddAttackProperties(const AttackProperty& value) { m_attackPropertiesHasBeenSet = true; m_attackProperties.push_back(value); return *this; } /** *

The array of objects that provide details of the Shield event.

For * infrastructure layer events (L3 and L4 events), you can view metrics for top * contributors in Amazon CloudWatch metrics. For more information, see Shield * metrics and alarms in the WAF Developer Guide.

*/ inline AttackDetail& AddAttackProperties(AttackProperty&& value) { m_attackPropertiesHasBeenSet = true; m_attackProperties.push_back(std::move(value)); return *this; } /** *

List of mitigation actions taken for the attack.

*/ inline const Aws::Vector& GetMitigations() const{ return m_mitigations; } /** *

List of mitigation actions taken for the attack.

*/ inline bool MitigationsHasBeenSet() const { return m_mitigationsHasBeenSet; } /** *

List of mitigation actions taken for the attack.

*/ inline void SetMitigations(const Aws::Vector& value) { m_mitigationsHasBeenSet = true; m_mitigations = value; } /** *

List of mitigation actions taken for the attack.

*/ inline void SetMitigations(Aws::Vector&& value) { m_mitigationsHasBeenSet = true; m_mitigations = std::move(value); } /** *

List of mitigation actions taken for the attack.

*/ inline AttackDetail& WithMitigations(const Aws::Vector& value) { SetMitigations(value); return *this;} /** *

List of mitigation actions taken for the attack.

*/ inline AttackDetail& WithMitigations(Aws::Vector&& value) { SetMitigations(std::move(value)); return *this;} /** *

List of mitigation actions taken for the attack.

*/ inline AttackDetail& AddMitigations(const Mitigation& value) { m_mitigationsHasBeenSet = true; m_mitigations.push_back(value); return *this; } /** *

List of mitigation actions taken for the attack.

*/ inline AttackDetail& AddMitigations(Mitigation&& value) { m_mitigationsHasBeenSet = true; m_mitigations.push_back(std::move(value)); return *this; } private: Aws::String m_attackId; bool m_attackIdHasBeenSet = false; Aws::String m_resourceArn; bool m_resourceArnHasBeenSet = false; Aws::Vector m_subResources; bool m_subResourcesHasBeenSet = false; Aws::Utils::DateTime m_startTime; bool m_startTimeHasBeenSet = false; Aws::Utils::DateTime m_endTime; bool m_endTimeHasBeenSet = false; Aws::Vector m_attackCounters; bool m_attackCountersHasBeenSet = false; Aws::Vector m_attackProperties; bool m_attackPropertiesHasBeenSet = false; Aws::Vector m_mitigations; bool m_mitigationsHasBeenSet = false; }; } // namespace Model } // namespace Shield } // namespace Aws