/** * 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 InternetMonitor { namespace Model { /** */ class CreateMonitorRequest : public InternetMonitorRequest { public: AWS_INTERNETMONITOR_API CreateMonitorRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreateMonitor"; } AWS_INTERNETMONITOR_API Aws::String SerializePayload() const override; /** *

The name of the monitor.

*/ inline const Aws::String& GetMonitorName() const{ return m_monitorName; } /** *

The name of the monitor.

*/ inline bool MonitorNameHasBeenSet() const { return m_monitorNameHasBeenSet; } /** *

The name of the monitor.

*/ inline void SetMonitorName(const Aws::String& value) { m_monitorNameHasBeenSet = true; m_monitorName = value; } /** *

The name of the monitor.

*/ inline void SetMonitorName(Aws::String&& value) { m_monitorNameHasBeenSet = true; m_monitorName = std::move(value); } /** *

The name of the monitor.

*/ inline void SetMonitorName(const char* value) { m_monitorNameHasBeenSet = true; m_monitorName.assign(value); } /** *

The name of the monitor.

*/ inline CreateMonitorRequest& WithMonitorName(const Aws::String& value) { SetMonitorName(value); return *this;} /** *

The name of the monitor.

*/ inline CreateMonitorRequest& WithMonitorName(Aws::String&& value) { SetMonitorName(std::move(value)); return *this;} /** *

The name of the monitor.

*/ inline CreateMonitorRequest& WithMonitorName(const char* value) { SetMonitorName(value); return *this;} /** *

The resources to include in a monitor, which you provide as a set of Amazon * Resource Names (ARNs).

You can add a combination of Amazon Virtual * Private Clouds (VPCs) and Amazon CloudFront distributions, or you can add Amazon * WorkSpaces directories. You can't add all three types of resources.

*

If you add only VPC resources, at least one VPC must have an Internet Gateway * attached to it, to make sure that it has internet connectivity.

*/ inline const Aws::Vector& GetResources() const{ return m_resources; } /** *

The resources to include in a monitor, which you provide as a set of Amazon * Resource Names (ARNs).

You can add a combination of Amazon Virtual * Private Clouds (VPCs) and Amazon CloudFront distributions, or you can add Amazon * WorkSpaces directories. You can't add all three types of resources.

*

If you add only VPC resources, at least one VPC must have an Internet Gateway * attached to it, to make sure that it has internet connectivity.

*/ inline bool ResourcesHasBeenSet() const { return m_resourcesHasBeenSet; } /** *

The resources to include in a monitor, which you provide as a set of Amazon * Resource Names (ARNs).

You can add a combination of Amazon Virtual * Private Clouds (VPCs) and Amazon CloudFront distributions, or you can add Amazon * WorkSpaces directories. You can't add all three types of resources.

*

If you add only VPC resources, at least one VPC must have an Internet Gateway * attached to it, to make sure that it has internet connectivity.

*/ inline void SetResources(const Aws::Vector& value) { m_resourcesHasBeenSet = true; m_resources = value; } /** *

The resources to include in a monitor, which you provide as a set of Amazon * Resource Names (ARNs).

You can add a combination of Amazon Virtual * Private Clouds (VPCs) and Amazon CloudFront distributions, or you can add Amazon * WorkSpaces directories. You can't add all three types of resources.

*

If you add only VPC resources, at least one VPC must have an Internet Gateway * attached to it, to make sure that it has internet connectivity.

*/ inline void SetResources(Aws::Vector&& value) { m_resourcesHasBeenSet = true; m_resources = std::move(value); } /** *

The resources to include in a monitor, which you provide as a set of Amazon * Resource Names (ARNs).

You can add a combination of Amazon Virtual * Private Clouds (VPCs) and Amazon CloudFront distributions, or you can add Amazon * WorkSpaces directories. You can't add all three types of resources.

*

If you add only VPC resources, at least one VPC must have an Internet Gateway * attached to it, to make sure that it has internet connectivity.

*/ inline CreateMonitorRequest& WithResources(const Aws::Vector& value) { SetResources(value); return *this;} /** *

The resources to include in a monitor, which you provide as a set of Amazon * Resource Names (ARNs).

You can add a combination of Amazon Virtual * Private Clouds (VPCs) and Amazon CloudFront distributions, or you can add Amazon * WorkSpaces directories. You can't add all three types of resources.

*

If you add only VPC resources, at least one VPC must have an Internet Gateway * attached to it, to make sure that it has internet connectivity.

*/ inline CreateMonitorRequest& WithResources(Aws::Vector&& value) { SetResources(std::move(value)); return *this;} /** *

The resources to include in a monitor, which you provide as a set of Amazon * Resource Names (ARNs).

You can add a combination of Amazon Virtual * Private Clouds (VPCs) and Amazon CloudFront distributions, or you can add Amazon * WorkSpaces directories. You can't add all three types of resources.

*

If you add only VPC resources, at least one VPC must have an Internet Gateway * attached to it, to make sure that it has internet connectivity.

*/ inline CreateMonitorRequest& AddResources(const Aws::String& value) { m_resourcesHasBeenSet = true; m_resources.push_back(value); return *this; } /** *

The resources to include in a monitor, which you provide as a set of Amazon * Resource Names (ARNs).

You can add a combination of Amazon Virtual * Private Clouds (VPCs) and Amazon CloudFront distributions, or you can add Amazon * WorkSpaces directories. You can't add all three types of resources.

*

If you add only VPC resources, at least one VPC must have an Internet Gateway * attached to it, to make sure that it has internet connectivity.

*/ inline CreateMonitorRequest& AddResources(Aws::String&& value) { m_resourcesHasBeenSet = true; m_resources.push_back(std::move(value)); return *this; } /** *

The resources to include in a monitor, which you provide as a set of Amazon * Resource Names (ARNs).

You can add a combination of Amazon Virtual * Private Clouds (VPCs) and Amazon CloudFront distributions, or you can add Amazon * WorkSpaces directories. You can't add all three types of resources.

*

If you add only VPC resources, at least one VPC must have an Internet Gateway * attached to it, to make sure that it has internet connectivity.

*/ inline CreateMonitorRequest& AddResources(const char* value) { m_resourcesHasBeenSet = true; m_resources.push_back(value); return *this; } /** *

A unique, case-sensitive string of up to 64 ASCII characters that you specify * to make an idempotent API request. Don't reuse the same client token for other * API requests.

*/ inline const Aws::String& GetClientToken() const{ return m_clientToken; } /** *

A unique, case-sensitive string of up to 64 ASCII characters that you specify * to make an idempotent API request. Don't reuse the same client token for other * API requests.

*/ inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } /** *

A unique, case-sensitive string of up to 64 ASCII characters that you specify * to make an idempotent API request. Don't reuse the same client token for other * API requests.

*/ inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } /** *

A unique, case-sensitive string of up to 64 ASCII characters that you specify * to make an idempotent API request. Don't reuse the same client token for other * API requests.

*/ inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } /** *

A unique, case-sensitive string of up to 64 ASCII characters that you specify * to make an idempotent API request. Don't reuse the same client token for other * API requests.

*/ inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } /** *

A unique, case-sensitive string of up to 64 ASCII characters that you specify * to make an idempotent API request. Don't reuse the same client token for other * API requests.

*/ inline CreateMonitorRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} /** *

A unique, case-sensitive string of up to 64 ASCII characters that you specify * to make an idempotent API request. Don't reuse the same client token for other * API requests.

*/ inline CreateMonitorRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} /** *

A unique, case-sensitive string of up to 64 ASCII characters that you specify * to make an idempotent API request. Don't reuse the same client token for other * API requests.

*/ inline CreateMonitorRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline const Aws::Map& GetTags() const{ return m_tags; } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline void SetTags(const Aws::Map& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline void SetTags(Aws::Map&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline CreateMonitorRequest& WithTags(const Aws::Map& value) { SetTags(value); return *this;} /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline CreateMonitorRequest& WithTags(Aws::Map&& value) { SetTags(std::move(value)); return *this;} /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline CreateMonitorRequest& AddTags(const Aws::String& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline CreateMonitorRequest& AddTags(Aws::String&& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline CreateMonitorRequest& AddTags(const Aws::String& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline CreateMonitorRequest& AddTags(Aws::String&& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), std::move(value)); return *this; } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline CreateMonitorRequest& AddTags(const char* key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline CreateMonitorRequest& AddTags(Aws::String&& key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } /** *

The tags for a monitor. You can add a maximum of 50 tags in Internet * Monitor.

*/ inline CreateMonitorRequest& AddTags(const char* key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } /** *

The maximum number of city-networks to monitor for your resources. A * city-network is the location (city) where clients access your application * resources from and the network or ASN, such as an internet service provider * (ISP), that clients access the resources through. This limit helps control * billing costs.

To learn more, see Choosing * a city-network maximum value in the Amazon CloudWatch Internet Monitor * section of the CloudWatch User Guide.

*/ inline int GetMaxCityNetworksToMonitor() const{ return m_maxCityNetworksToMonitor; } /** *

The maximum number of city-networks to monitor for your resources. A * city-network is the location (city) where clients access your application * resources from and the network or ASN, such as an internet service provider * (ISP), that clients access the resources through. This limit helps control * billing costs.

To learn more, see Choosing * a city-network maximum value in the Amazon CloudWatch Internet Monitor * section of the CloudWatch User Guide.

*/ inline bool MaxCityNetworksToMonitorHasBeenSet() const { return m_maxCityNetworksToMonitorHasBeenSet; } /** *

The maximum number of city-networks to monitor for your resources. A * city-network is the location (city) where clients access your application * resources from and the network or ASN, such as an internet service provider * (ISP), that clients access the resources through. This limit helps control * billing costs.

To learn more, see Choosing * a city-network maximum value in the Amazon CloudWatch Internet Monitor * section of the CloudWatch User Guide.

*/ inline void SetMaxCityNetworksToMonitor(int value) { m_maxCityNetworksToMonitorHasBeenSet = true; m_maxCityNetworksToMonitor = value; } /** *

The maximum number of city-networks to monitor for your resources. A * city-network is the location (city) where clients access your application * resources from and the network or ASN, such as an internet service provider * (ISP), that clients access the resources through. This limit helps control * billing costs.

To learn more, see Choosing * a city-network maximum value in the Amazon CloudWatch Internet Monitor * section of the CloudWatch User Guide.

*/ inline CreateMonitorRequest& WithMaxCityNetworksToMonitor(int value) { SetMaxCityNetworksToMonitor(value); return *this;} /** *

Publish internet measurements for Internet Monitor to an Amazon S3 bucket in * addition to CloudWatch Logs.

*/ inline const InternetMeasurementsLogDelivery& GetInternetMeasurementsLogDelivery() const{ return m_internetMeasurementsLogDelivery; } /** *

Publish internet measurements for Internet Monitor to an Amazon S3 bucket in * addition to CloudWatch Logs.

*/ inline bool InternetMeasurementsLogDeliveryHasBeenSet() const { return m_internetMeasurementsLogDeliveryHasBeenSet; } /** *

Publish internet measurements for Internet Monitor to an Amazon S3 bucket in * addition to CloudWatch Logs.

*/ inline void SetInternetMeasurementsLogDelivery(const InternetMeasurementsLogDelivery& value) { m_internetMeasurementsLogDeliveryHasBeenSet = true; m_internetMeasurementsLogDelivery = value; } /** *

Publish internet measurements for Internet Monitor to an Amazon S3 bucket in * addition to CloudWatch Logs.

*/ inline void SetInternetMeasurementsLogDelivery(InternetMeasurementsLogDelivery&& value) { m_internetMeasurementsLogDeliveryHasBeenSet = true; m_internetMeasurementsLogDelivery = std::move(value); } /** *

Publish internet measurements for Internet Monitor to an Amazon S3 bucket in * addition to CloudWatch Logs.

*/ inline CreateMonitorRequest& WithInternetMeasurementsLogDelivery(const InternetMeasurementsLogDelivery& value) { SetInternetMeasurementsLogDelivery(value); return *this;} /** *

Publish internet measurements for Internet Monitor to an Amazon S3 bucket in * addition to CloudWatch Logs.

*/ inline CreateMonitorRequest& WithInternetMeasurementsLogDelivery(InternetMeasurementsLogDelivery&& value) { SetInternetMeasurementsLogDelivery(std::move(value)); return *this;} /** *

The percentage of the internet-facing traffic for your application that you * want to monitor with this monitor.

*/ inline int GetTrafficPercentageToMonitor() const{ return m_trafficPercentageToMonitor; } /** *

The percentage of the internet-facing traffic for your application that you * want to monitor with this monitor.

*/ inline bool TrafficPercentageToMonitorHasBeenSet() const { return m_trafficPercentageToMonitorHasBeenSet; } /** *

The percentage of the internet-facing traffic for your application that you * want to monitor with this monitor.

*/ inline void SetTrafficPercentageToMonitor(int value) { m_trafficPercentageToMonitorHasBeenSet = true; m_trafficPercentageToMonitor = value; } /** *

The percentage of the internet-facing traffic for your application that you * want to monitor with this monitor.

*/ inline CreateMonitorRequest& WithTrafficPercentageToMonitor(int value) { SetTrafficPercentageToMonitor(value); return *this;} /** *

Defines the health event threshold percentages, for performance score and * availability score. Internet Monitor creates a health event when there's an * internet issue that affects your application end users where a health score * percentage is at or below a set threshold. If you don't set a health event * threshold, the default calue is 95%.

*/ inline const HealthEventsConfig& GetHealthEventsConfig() const{ return m_healthEventsConfig; } /** *

Defines the health event threshold percentages, for performance score and * availability score. Internet Monitor creates a health event when there's an * internet issue that affects your application end users where a health score * percentage is at or below a set threshold. If you don't set a health event * threshold, the default calue is 95%.

*/ inline bool HealthEventsConfigHasBeenSet() const { return m_healthEventsConfigHasBeenSet; } /** *

Defines the health event threshold percentages, for performance score and * availability score. Internet Monitor creates a health event when there's an * internet issue that affects your application end users where a health score * percentage is at or below a set threshold. If you don't set a health event * threshold, the default calue is 95%.

*/ inline void SetHealthEventsConfig(const HealthEventsConfig& value) { m_healthEventsConfigHasBeenSet = true; m_healthEventsConfig = value; } /** *

Defines the health event threshold percentages, for performance score and * availability score. Internet Monitor creates a health event when there's an * internet issue that affects your application end users where a health score * percentage is at or below a set threshold. If you don't set a health event * threshold, the default calue is 95%.

*/ inline void SetHealthEventsConfig(HealthEventsConfig&& value) { m_healthEventsConfigHasBeenSet = true; m_healthEventsConfig = std::move(value); } /** *

Defines the health event threshold percentages, for performance score and * availability score. Internet Monitor creates a health event when there's an * internet issue that affects your application end users where a health score * percentage is at or below a set threshold. If you don't set a health event * threshold, the default calue is 95%.

*/ inline CreateMonitorRequest& WithHealthEventsConfig(const HealthEventsConfig& value) { SetHealthEventsConfig(value); return *this;} /** *

Defines the health event threshold percentages, for performance score and * availability score. Internet Monitor creates a health event when there's an * internet issue that affects your application end users where a health score * percentage is at or below a set threshold. If you don't set a health event * threshold, the default calue is 95%.

*/ inline CreateMonitorRequest& WithHealthEventsConfig(HealthEventsConfig&& value) { SetHealthEventsConfig(std::move(value)); return *this;} private: Aws::String m_monitorName; bool m_monitorNameHasBeenSet = false; Aws::Vector m_resources; bool m_resourcesHasBeenSet = false; Aws::String m_clientToken; bool m_clientTokenHasBeenSet = false; Aws::Map m_tags; bool m_tagsHasBeenSet = false; int m_maxCityNetworksToMonitor; bool m_maxCityNetworksToMonitorHasBeenSet = false; InternetMeasurementsLogDelivery m_internetMeasurementsLogDelivery; bool m_internetMeasurementsLogDeliveryHasBeenSet = false; int m_trafficPercentageToMonitor; bool m_trafficPercentageToMonitorHasBeenSet = false; HealthEventsConfig m_healthEventsConfig; bool m_healthEventsConfigHasBeenSet = false; }; } // namespace Model } // namespace InternetMonitor } // namespace Aws