/** * 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 { /** *

Information about the Shield Advanced subscription for an * account.

See Also:

AWS * API Reference

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

The start time of the subscription, in Unix time in seconds.

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

The start time of the subscription, in Unix time in seconds.

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

The start time of the subscription, in Unix time in seconds.

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

The start time of the subscription, in Unix time in seconds.

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

The start time of the subscription, in Unix time in seconds.

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

The start time of the subscription, in Unix time in seconds.

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

The date and time your subscription will end.

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

The date and time your subscription will end.

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

The date and time your subscription will end.

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

The date and time your subscription will end.

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

The date and time your subscription will end.

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

The date and time your subscription will end.

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

The length, in seconds, of the Shield Advanced subscription for the * account.

*/ inline long long GetTimeCommitmentInSeconds() const{ return m_timeCommitmentInSeconds; } /** *

The length, in seconds, of the Shield Advanced subscription for the * account.

*/ inline bool TimeCommitmentInSecondsHasBeenSet() const { return m_timeCommitmentInSecondsHasBeenSet; } /** *

The length, in seconds, of the Shield Advanced subscription for the * account.

*/ inline void SetTimeCommitmentInSeconds(long long value) { m_timeCommitmentInSecondsHasBeenSet = true; m_timeCommitmentInSeconds = value; } /** *

The length, in seconds, of the Shield Advanced subscription for the * account.

*/ inline Subscription& WithTimeCommitmentInSeconds(long long value) { SetTimeCommitmentInSeconds(value); return *this;} /** *

If ENABLED, the subscription will be automatically renewed at * the end of the existing subscription period.

When you initally create a * subscription, AutoRenew is set to ENABLED. You can * change this by submitting an UpdateSubscription request. If the * UpdateSubscription request does not included a value for * AutoRenew, the existing value for AutoRenew remains * unchanged.

*/ inline const AutoRenew& GetAutoRenew() const{ return m_autoRenew; } /** *

If ENABLED, the subscription will be automatically renewed at * the end of the existing subscription period.

When you initally create a * subscription, AutoRenew is set to ENABLED. You can * change this by submitting an UpdateSubscription request. If the * UpdateSubscription request does not included a value for * AutoRenew, the existing value for AutoRenew remains * unchanged.

*/ inline bool AutoRenewHasBeenSet() const { return m_autoRenewHasBeenSet; } /** *

If ENABLED, the subscription will be automatically renewed at * the end of the existing subscription period.

When you initally create a * subscription, AutoRenew is set to ENABLED. You can * change this by submitting an UpdateSubscription request. If the * UpdateSubscription request does not included a value for * AutoRenew, the existing value for AutoRenew remains * unchanged.

*/ inline void SetAutoRenew(const AutoRenew& value) { m_autoRenewHasBeenSet = true; m_autoRenew = value; } /** *

If ENABLED, the subscription will be automatically renewed at * the end of the existing subscription period.

When you initally create a * subscription, AutoRenew is set to ENABLED. You can * change this by submitting an UpdateSubscription request. If the * UpdateSubscription request does not included a value for * AutoRenew, the existing value for AutoRenew remains * unchanged.

*/ inline void SetAutoRenew(AutoRenew&& value) { m_autoRenewHasBeenSet = true; m_autoRenew = std::move(value); } /** *

If ENABLED, the subscription will be automatically renewed at * the end of the existing subscription period.

When you initally create a * subscription, AutoRenew is set to ENABLED. You can * change this by submitting an UpdateSubscription request. If the * UpdateSubscription request does not included a value for * AutoRenew, the existing value for AutoRenew remains * unchanged.

*/ inline Subscription& WithAutoRenew(const AutoRenew& value) { SetAutoRenew(value); return *this;} /** *

If ENABLED, the subscription will be automatically renewed at * the end of the existing subscription period.

When you initally create a * subscription, AutoRenew is set to ENABLED. You can * change this by submitting an UpdateSubscription request. If the * UpdateSubscription request does not included a value for * AutoRenew, the existing value for AutoRenew remains * unchanged.

*/ inline Subscription& WithAutoRenew(AutoRenew&& value) { SetAutoRenew(std::move(value)); return *this;} /** *

Specifies how many protections of a given type you can create.

*/ inline const Aws::Vector& GetLimits() const{ return m_limits; } /** *

Specifies how many protections of a given type you can create.

*/ inline bool LimitsHasBeenSet() const { return m_limitsHasBeenSet; } /** *

Specifies how many protections of a given type you can create.

*/ inline void SetLimits(const Aws::Vector& value) { m_limitsHasBeenSet = true; m_limits = value; } /** *

Specifies how many protections of a given type you can create.

*/ inline void SetLimits(Aws::Vector&& value) { m_limitsHasBeenSet = true; m_limits = std::move(value); } /** *

Specifies how many protections of a given type you can create.

*/ inline Subscription& WithLimits(const Aws::Vector& value) { SetLimits(value); return *this;} /** *

Specifies how many protections of a given type you can create.

*/ inline Subscription& WithLimits(Aws::Vector&& value) { SetLimits(std::move(value)); return *this;} /** *

Specifies how many protections of a given type you can create.

*/ inline Subscription& AddLimits(const Limit& value) { m_limitsHasBeenSet = true; m_limits.push_back(value); return *this; } /** *

Specifies how many protections of a given type you can create.

*/ inline Subscription& AddLimits(Limit&& value) { m_limitsHasBeenSet = true; m_limits.push_back(std::move(value)); return *this; } /** *

If ENABLED, the Shield Response Team (SRT) will use email and * phone to notify contacts about escalations to the SRT and to initiate proactive * customer support.

If PENDING, you have requested proactive * engagement and the request is pending. The status changes to * ENABLED when your request is fully processed.

If * DISABLED, the SRT will not proactively notify contacts about * escalations or to initiate proactive customer support.

*/ inline const ProactiveEngagementStatus& GetProactiveEngagementStatus() const{ return m_proactiveEngagementStatus; } /** *

If ENABLED, the Shield Response Team (SRT) will use email and * phone to notify contacts about escalations to the SRT and to initiate proactive * customer support.

If PENDING, you have requested proactive * engagement and the request is pending. The status changes to * ENABLED when your request is fully processed.

If * DISABLED, the SRT will not proactively notify contacts about * escalations or to initiate proactive customer support.

*/ inline bool ProactiveEngagementStatusHasBeenSet() const { return m_proactiveEngagementStatusHasBeenSet; } /** *

If ENABLED, the Shield Response Team (SRT) will use email and * phone to notify contacts about escalations to the SRT and to initiate proactive * customer support.

If PENDING, you have requested proactive * engagement and the request is pending. The status changes to * ENABLED when your request is fully processed.

If * DISABLED, the SRT will not proactively notify contacts about * escalations or to initiate proactive customer support.

*/ inline void SetProactiveEngagementStatus(const ProactiveEngagementStatus& value) { m_proactiveEngagementStatusHasBeenSet = true; m_proactiveEngagementStatus = value; } /** *

If ENABLED, the Shield Response Team (SRT) will use email and * phone to notify contacts about escalations to the SRT and to initiate proactive * customer support.

If PENDING, you have requested proactive * engagement and the request is pending. The status changes to * ENABLED when your request is fully processed.

If * DISABLED, the SRT will not proactively notify contacts about * escalations or to initiate proactive customer support.

*/ inline void SetProactiveEngagementStatus(ProactiveEngagementStatus&& value) { m_proactiveEngagementStatusHasBeenSet = true; m_proactiveEngagementStatus = std::move(value); } /** *

If ENABLED, the Shield Response Team (SRT) will use email and * phone to notify contacts about escalations to the SRT and to initiate proactive * customer support.

If PENDING, you have requested proactive * engagement and the request is pending. The status changes to * ENABLED when your request is fully processed.

If * DISABLED, the SRT will not proactively notify contacts about * escalations or to initiate proactive customer support.

*/ inline Subscription& WithProactiveEngagementStatus(const ProactiveEngagementStatus& value) { SetProactiveEngagementStatus(value); return *this;} /** *

If ENABLED, the Shield Response Team (SRT) will use email and * phone to notify contacts about escalations to the SRT and to initiate proactive * customer support.

If PENDING, you have requested proactive * engagement and the request is pending. The status changes to * ENABLED when your request is fully processed.

If * DISABLED, the SRT will not proactively notify contacts about * escalations or to initiate proactive customer support.

*/ inline Subscription& WithProactiveEngagementStatus(ProactiveEngagementStatus&& value) { SetProactiveEngagementStatus(std::move(value)); return *this;} /** *

Limits settings for your subscription.

*/ inline const SubscriptionLimits& GetSubscriptionLimits() const{ return m_subscriptionLimits; } /** *

Limits settings for your subscription.

*/ inline bool SubscriptionLimitsHasBeenSet() const { return m_subscriptionLimitsHasBeenSet; } /** *

Limits settings for your subscription.

*/ inline void SetSubscriptionLimits(const SubscriptionLimits& value) { m_subscriptionLimitsHasBeenSet = true; m_subscriptionLimits = value; } /** *

Limits settings for your subscription.

*/ inline void SetSubscriptionLimits(SubscriptionLimits&& value) { m_subscriptionLimitsHasBeenSet = true; m_subscriptionLimits = std::move(value); } /** *

Limits settings for your subscription.

*/ inline Subscription& WithSubscriptionLimits(const SubscriptionLimits& value) { SetSubscriptionLimits(value); return *this;} /** *

Limits settings for your subscription.

*/ inline Subscription& WithSubscriptionLimits(SubscriptionLimits&& value) { SetSubscriptionLimits(std::move(value)); return *this;} /** *

The ARN (Amazon Resource Name) of the subscription.

*/ inline const Aws::String& GetSubscriptionArn() const{ return m_subscriptionArn; } /** *

The ARN (Amazon Resource Name) of the subscription.

*/ inline bool SubscriptionArnHasBeenSet() const { return m_subscriptionArnHasBeenSet; } /** *

The ARN (Amazon Resource Name) of the subscription.

*/ inline void SetSubscriptionArn(const Aws::String& value) { m_subscriptionArnHasBeenSet = true; m_subscriptionArn = value; } /** *

The ARN (Amazon Resource Name) of the subscription.

*/ inline void SetSubscriptionArn(Aws::String&& value) { m_subscriptionArnHasBeenSet = true; m_subscriptionArn = std::move(value); } /** *

The ARN (Amazon Resource Name) of the subscription.

*/ inline void SetSubscriptionArn(const char* value) { m_subscriptionArnHasBeenSet = true; m_subscriptionArn.assign(value); } /** *

The ARN (Amazon Resource Name) of the subscription.

*/ inline Subscription& WithSubscriptionArn(const Aws::String& value) { SetSubscriptionArn(value); return *this;} /** *

The ARN (Amazon Resource Name) of the subscription.

*/ inline Subscription& WithSubscriptionArn(Aws::String&& value) { SetSubscriptionArn(std::move(value)); return *this;} /** *

The ARN (Amazon Resource Name) of the subscription.

*/ inline Subscription& WithSubscriptionArn(const char* value) { SetSubscriptionArn(value); return *this;} private: Aws::Utils::DateTime m_startTime; bool m_startTimeHasBeenSet = false; Aws::Utils::DateTime m_endTime; bool m_endTimeHasBeenSet = false; long long m_timeCommitmentInSeconds; bool m_timeCommitmentInSecondsHasBeenSet = false; AutoRenew m_autoRenew; bool m_autoRenewHasBeenSet = false; Aws::Vector m_limits; bool m_limitsHasBeenSet = false; ProactiveEngagementStatus m_proactiveEngagementStatus; bool m_proactiveEngagementStatusHasBeenSet = false; SubscriptionLimits m_subscriptionLimits; bool m_subscriptionLimitsHasBeenSet = false; Aws::String m_subscriptionArn; bool m_subscriptionArnHasBeenSet = false; }; } // namespace Model } // namespace Shield } // namespace Aws