/** * 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 APIGateway { namespace Model { /** *

Represents a custom domain name as a user-friendly host name of an API * (RestApi).

See Also:

AWS * API Reference

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

The custom domain name as an API host name, for example, * my-api.example.com.

*/ inline const Aws::String& GetDomainName() const{ return m_domainName; } inline bool DomainNameHasBeenSet() const { return m_domainNameHasBeenSet; } inline void SetDomainName(const Aws::String& value) { m_domainNameHasBeenSet = true; m_domainName = value; } inline void SetDomainName(Aws::String&& value) { m_domainNameHasBeenSet = true; m_domainName = std::move(value); } inline void SetDomainName(const char* value) { m_domainNameHasBeenSet = true; m_domainName.assign(value); } inline DomainName& WithDomainName(const Aws::String& value) { SetDomainName(value); return *this;} inline DomainName& WithDomainName(Aws::String&& value) { SetDomainName(std::move(value)); return *this;} inline DomainName& WithDomainName(const char* value) { SetDomainName(value); return *this;} ///@} ///@{ /** *

The name of the certificate that will be used by edge-optimized endpoint for * this domain name.

*/ inline const Aws::String& GetCertificateName() const{ return m_certificateName; } inline bool CertificateNameHasBeenSet() const { return m_certificateNameHasBeenSet; } inline void SetCertificateName(const Aws::String& value) { m_certificateNameHasBeenSet = true; m_certificateName = value; } inline void SetCertificateName(Aws::String&& value) { m_certificateNameHasBeenSet = true; m_certificateName = std::move(value); } inline void SetCertificateName(const char* value) { m_certificateNameHasBeenSet = true; m_certificateName.assign(value); } inline DomainName& WithCertificateName(const Aws::String& value) { SetCertificateName(value); return *this;} inline DomainName& WithCertificateName(Aws::String&& value) { SetCertificateName(std::move(value)); return *this;} inline DomainName& WithCertificateName(const char* value) { SetCertificateName(value); return *this;} ///@} ///@{ /** *

The reference to an Amazon Web Services-managed certificate that will be used * by edge-optimized endpoint for this domain name. Certificate Manager is the only * supported source.

*/ inline const Aws::String& GetCertificateArn() const{ return m_certificateArn; } inline bool CertificateArnHasBeenSet() const { return m_certificateArnHasBeenSet; } inline void SetCertificateArn(const Aws::String& value) { m_certificateArnHasBeenSet = true; m_certificateArn = value; } inline void SetCertificateArn(Aws::String&& value) { m_certificateArnHasBeenSet = true; m_certificateArn = std::move(value); } inline void SetCertificateArn(const char* value) { m_certificateArnHasBeenSet = true; m_certificateArn.assign(value); } inline DomainName& WithCertificateArn(const Aws::String& value) { SetCertificateArn(value); return *this;} inline DomainName& WithCertificateArn(Aws::String&& value) { SetCertificateArn(std::move(value)); return *this;} inline DomainName& WithCertificateArn(const char* value) { SetCertificateArn(value); return *this;} ///@} ///@{ /** *

The timestamp when the certificate that was used by edge-optimized endpoint * for this domain name was uploaded. API Gateway doesn't change this value if you * update the certificate.

*/ inline const Aws::Utils::DateTime& GetCertificateUploadDate() const{ return m_certificateUploadDate; } inline bool CertificateUploadDateHasBeenSet() const { return m_certificateUploadDateHasBeenSet; } inline void SetCertificateUploadDate(const Aws::Utils::DateTime& value) { m_certificateUploadDateHasBeenSet = true; m_certificateUploadDate = value; } inline void SetCertificateUploadDate(Aws::Utils::DateTime&& value) { m_certificateUploadDateHasBeenSet = true; m_certificateUploadDate = std::move(value); } inline DomainName& WithCertificateUploadDate(const Aws::Utils::DateTime& value) { SetCertificateUploadDate(value); return *this;} inline DomainName& WithCertificateUploadDate(Aws::Utils::DateTime&& value) { SetCertificateUploadDate(std::move(value)); return *this;} ///@} ///@{ /** *

The domain name associated with the regional endpoint for this custom domain * name. You set up this association by adding a DNS record that points the custom * domain name to this regional domain name. The regional domain name is returned * by API Gateway when you create a regional endpoint.

*/ inline const Aws::String& GetRegionalDomainName() const{ return m_regionalDomainName; } inline bool RegionalDomainNameHasBeenSet() const { return m_regionalDomainNameHasBeenSet; } inline void SetRegionalDomainName(const Aws::String& value) { m_regionalDomainNameHasBeenSet = true; m_regionalDomainName = value; } inline void SetRegionalDomainName(Aws::String&& value) { m_regionalDomainNameHasBeenSet = true; m_regionalDomainName = std::move(value); } inline void SetRegionalDomainName(const char* value) { m_regionalDomainNameHasBeenSet = true; m_regionalDomainName.assign(value); } inline DomainName& WithRegionalDomainName(const Aws::String& value) { SetRegionalDomainName(value); return *this;} inline DomainName& WithRegionalDomainName(Aws::String&& value) { SetRegionalDomainName(std::move(value)); return *this;} inline DomainName& WithRegionalDomainName(const char* value) { SetRegionalDomainName(value); return *this;} ///@} ///@{ /** *

The region-specific Amazon Route 53 Hosted Zone ID of the regional endpoint. * For more information, see Set up a Regional Custom Domain Name and AWS Regions * and Endpoints for API Gateway.

*/ inline const Aws::String& GetRegionalHostedZoneId() const{ return m_regionalHostedZoneId; } inline bool RegionalHostedZoneIdHasBeenSet() const { return m_regionalHostedZoneIdHasBeenSet; } inline void SetRegionalHostedZoneId(const Aws::String& value) { m_regionalHostedZoneIdHasBeenSet = true; m_regionalHostedZoneId = value; } inline void SetRegionalHostedZoneId(Aws::String&& value) { m_regionalHostedZoneIdHasBeenSet = true; m_regionalHostedZoneId = std::move(value); } inline void SetRegionalHostedZoneId(const char* value) { m_regionalHostedZoneIdHasBeenSet = true; m_regionalHostedZoneId.assign(value); } inline DomainName& WithRegionalHostedZoneId(const Aws::String& value) { SetRegionalHostedZoneId(value); return *this;} inline DomainName& WithRegionalHostedZoneId(Aws::String&& value) { SetRegionalHostedZoneId(std::move(value)); return *this;} inline DomainName& WithRegionalHostedZoneId(const char* value) { SetRegionalHostedZoneId(value); return *this;} ///@} ///@{ /** *

The name of the certificate that will be used for validating the regional * domain name.

*/ inline const Aws::String& GetRegionalCertificateName() const{ return m_regionalCertificateName; } inline bool RegionalCertificateNameHasBeenSet() const { return m_regionalCertificateNameHasBeenSet; } inline void SetRegionalCertificateName(const Aws::String& value) { m_regionalCertificateNameHasBeenSet = true; m_regionalCertificateName = value; } inline void SetRegionalCertificateName(Aws::String&& value) { m_regionalCertificateNameHasBeenSet = true; m_regionalCertificateName = std::move(value); } inline void SetRegionalCertificateName(const char* value) { m_regionalCertificateNameHasBeenSet = true; m_regionalCertificateName.assign(value); } inline DomainName& WithRegionalCertificateName(const Aws::String& value) { SetRegionalCertificateName(value); return *this;} inline DomainName& WithRegionalCertificateName(Aws::String&& value) { SetRegionalCertificateName(std::move(value)); return *this;} inline DomainName& WithRegionalCertificateName(const char* value) { SetRegionalCertificateName(value); return *this;} ///@} ///@{ /** *

The reference to an Amazon Web Services-managed certificate that will be used * for validating the regional domain name. Certificate Manager is the only * supported source.

*/ inline const Aws::String& GetRegionalCertificateArn() const{ return m_regionalCertificateArn; } inline bool RegionalCertificateArnHasBeenSet() const { return m_regionalCertificateArnHasBeenSet; } inline void SetRegionalCertificateArn(const Aws::String& value) { m_regionalCertificateArnHasBeenSet = true; m_regionalCertificateArn = value; } inline void SetRegionalCertificateArn(Aws::String&& value) { m_regionalCertificateArnHasBeenSet = true; m_regionalCertificateArn = std::move(value); } inline void SetRegionalCertificateArn(const char* value) { m_regionalCertificateArnHasBeenSet = true; m_regionalCertificateArn.assign(value); } inline DomainName& WithRegionalCertificateArn(const Aws::String& value) { SetRegionalCertificateArn(value); return *this;} inline DomainName& WithRegionalCertificateArn(Aws::String&& value) { SetRegionalCertificateArn(std::move(value)); return *this;} inline DomainName& WithRegionalCertificateArn(const char* value) { SetRegionalCertificateArn(value); return *this;} ///@} ///@{ /** *

The domain name of the Amazon CloudFront distribution associated with this * custom domain name for an edge-optimized endpoint. You set up this association * when adding a DNS record pointing the custom domain name to this distribution * name. For more information about CloudFront distributions, see the Amazon * CloudFront documentation.

*/ inline const Aws::String& GetDistributionDomainName() const{ return m_distributionDomainName; } inline bool DistributionDomainNameHasBeenSet() const { return m_distributionDomainNameHasBeenSet; } inline void SetDistributionDomainName(const Aws::String& value) { m_distributionDomainNameHasBeenSet = true; m_distributionDomainName = value; } inline void SetDistributionDomainName(Aws::String&& value) { m_distributionDomainNameHasBeenSet = true; m_distributionDomainName = std::move(value); } inline void SetDistributionDomainName(const char* value) { m_distributionDomainNameHasBeenSet = true; m_distributionDomainName.assign(value); } inline DomainName& WithDistributionDomainName(const Aws::String& value) { SetDistributionDomainName(value); return *this;} inline DomainName& WithDistributionDomainName(Aws::String&& value) { SetDistributionDomainName(std::move(value)); return *this;} inline DomainName& WithDistributionDomainName(const char* value) { SetDistributionDomainName(value); return *this;} ///@} ///@{ /** *

The region-agnostic Amazon Route 53 Hosted Zone ID of the edge-optimized * endpoint. The valid value is Z2FDTNDATAQYW2 for all the regions. * For more information, see Set up a Regional Custom Domain Name and AWS Regions * and Endpoints for API Gateway.

*/ inline const Aws::String& GetDistributionHostedZoneId() const{ return m_distributionHostedZoneId; } inline bool DistributionHostedZoneIdHasBeenSet() const { return m_distributionHostedZoneIdHasBeenSet; } inline void SetDistributionHostedZoneId(const Aws::String& value) { m_distributionHostedZoneIdHasBeenSet = true; m_distributionHostedZoneId = value; } inline void SetDistributionHostedZoneId(Aws::String&& value) { m_distributionHostedZoneIdHasBeenSet = true; m_distributionHostedZoneId = std::move(value); } inline void SetDistributionHostedZoneId(const char* value) { m_distributionHostedZoneIdHasBeenSet = true; m_distributionHostedZoneId.assign(value); } inline DomainName& WithDistributionHostedZoneId(const Aws::String& value) { SetDistributionHostedZoneId(value); return *this;} inline DomainName& WithDistributionHostedZoneId(Aws::String&& value) { SetDistributionHostedZoneId(std::move(value)); return *this;} inline DomainName& WithDistributionHostedZoneId(const char* value) { SetDistributionHostedZoneId(value); return *this;} ///@} ///@{ /** *

The endpoint configuration of this DomainName showing the endpoint types of * the domain name.

*/ inline const EndpointConfiguration& GetEndpointConfiguration() const{ return m_endpointConfiguration; } inline bool EndpointConfigurationHasBeenSet() const { return m_endpointConfigurationHasBeenSet; } inline void SetEndpointConfiguration(const EndpointConfiguration& value) { m_endpointConfigurationHasBeenSet = true; m_endpointConfiguration = value; } inline void SetEndpointConfiguration(EndpointConfiguration&& value) { m_endpointConfigurationHasBeenSet = true; m_endpointConfiguration = std::move(value); } inline DomainName& WithEndpointConfiguration(const EndpointConfiguration& value) { SetEndpointConfiguration(value); return *this;} inline DomainName& WithEndpointConfiguration(EndpointConfiguration&& value) { SetEndpointConfiguration(std::move(value)); return *this;} ///@} ///@{ /** *

The status of the DomainName migration. The valid values are * AVAILABLE and UPDATING. If the status is * UPDATING, the domain cannot be modified further until the existing * operation is complete. If it is AVAILABLE, the domain can be * updated.

*/ inline const DomainNameStatus& GetDomainNameStatus() const{ return m_domainNameStatus; } inline bool DomainNameStatusHasBeenSet() const { return m_domainNameStatusHasBeenSet; } inline void SetDomainNameStatus(const DomainNameStatus& value) { m_domainNameStatusHasBeenSet = true; m_domainNameStatus = value; } inline void SetDomainNameStatus(DomainNameStatus&& value) { m_domainNameStatusHasBeenSet = true; m_domainNameStatus = std::move(value); } inline DomainName& WithDomainNameStatus(const DomainNameStatus& value) { SetDomainNameStatus(value); return *this;} inline DomainName& WithDomainNameStatus(DomainNameStatus&& value) { SetDomainNameStatus(std::move(value)); return *this;} ///@} ///@{ /** *

An optional text message containing detailed information about status of the * DomainName migration.

*/ inline const Aws::String& GetDomainNameStatusMessage() const{ return m_domainNameStatusMessage; } inline bool DomainNameStatusMessageHasBeenSet() const { return m_domainNameStatusMessageHasBeenSet; } inline void SetDomainNameStatusMessage(const Aws::String& value) { m_domainNameStatusMessageHasBeenSet = true; m_domainNameStatusMessage = value; } inline void SetDomainNameStatusMessage(Aws::String&& value) { m_domainNameStatusMessageHasBeenSet = true; m_domainNameStatusMessage = std::move(value); } inline void SetDomainNameStatusMessage(const char* value) { m_domainNameStatusMessageHasBeenSet = true; m_domainNameStatusMessage.assign(value); } inline DomainName& WithDomainNameStatusMessage(const Aws::String& value) { SetDomainNameStatusMessage(value); return *this;} inline DomainName& WithDomainNameStatusMessage(Aws::String&& value) { SetDomainNameStatusMessage(std::move(value)); return *this;} inline DomainName& WithDomainNameStatusMessage(const char* value) { SetDomainNameStatusMessage(value); return *this;} ///@} ///@{ /** *

The Transport Layer Security (TLS) version + cipher suite for this * DomainName. The valid values are TLS_1_0 and * TLS_1_2.

*/ inline const SecurityPolicy& GetSecurityPolicy() const{ return m_securityPolicy; } inline bool SecurityPolicyHasBeenSet() const { return m_securityPolicyHasBeenSet; } inline void SetSecurityPolicy(const SecurityPolicy& value) { m_securityPolicyHasBeenSet = true; m_securityPolicy = value; } inline void SetSecurityPolicy(SecurityPolicy&& value) { m_securityPolicyHasBeenSet = true; m_securityPolicy = std::move(value); } inline DomainName& WithSecurityPolicy(const SecurityPolicy& value) { SetSecurityPolicy(value); return *this;} inline DomainName& WithSecurityPolicy(SecurityPolicy&& value) { SetSecurityPolicy(std::move(value)); return *this;} ///@} ///@{ /** *

The collection of tags. Each tag element is associated with a given * resource.

*/ inline const Aws::Map& GetTags() const{ return m_tags; } inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } inline void SetTags(const Aws::Map& value) { m_tagsHasBeenSet = true; m_tags = value; } inline void SetTags(Aws::Map&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } inline DomainName& WithTags(const Aws::Map& value) { SetTags(value); return *this;} inline DomainName& WithTags(Aws::Map&& value) { SetTags(std::move(value)); return *this;} inline DomainName& AddTags(const Aws::String& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } inline DomainName& AddTags(Aws::String&& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } inline DomainName& AddTags(const Aws::String& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } inline DomainName& AddTags(Aws::String&& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), std::move(value)); return *this; } inline DomainName& AddTags(const char* key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } inline DomainName& AddTags(Aws::String&& key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } inline DomainName& AddTags(const char* key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } ///@} ///@{ /** *

The mutual TLS authentication configuration for a custom domain name. If * specified, API Gateway performs two-way authentication between the client and * the server. Clients must present a trusted certificate to access your API.

*/ inline const MutualTlsAuthentication& GetMutualTlsAuthentication() const{ return m_mutualTlsAuthentication; } inline bool MutualTlsAuthenticationHasBeenSet() const { return m_mutualTlsAuthenticationHasBeenSet; } inline void SetMutualTlsAuthentication(const MutualTlsAuthentication& value) { m_mutualTlsAuthenticationHasBeenSet = true; m_mutualTlsAuthentication = value; } inline void SetMutualTlsAuthentication(MutualTlsAuthentication&& value) { m_mutualTlsAuthenticationHasBeenSet = true; m_mutualTlsAuthentication = std::move(value); } inline DomainName& WithMutualTlsAuthentication(const MutualTlsAuthentication& value) { SetMutualTlsAuthentication(value); return *this;} inline DomainName& WithMutualTlsAuthentication(MutualTlsAuthentication&& value) { SetMutualTlsAuthentication(std::move(value)); return *this;} ///@} ///@{ /** *

The ARN of the public certificate issued by ACM to validate ownership of your * custom domain. Only required when configuring mutual TLS and using an ACM * imported or private CA certificate ARN as the regionalCertificateArn.

*/ inline const Aws::String& GetOwnershipVerificationCertificateArn() const{ return m_ownershipVerificationCertificateArn; } inline bool OwnershipVerificationCertificateArnHasBeenSet() const { return m_ownershipVerificationCertificateArnHasBeenSet; } inline void SetOwnershipVerificationCertificateArn(const Aws::String& value) { m_ownershipVerificationCertificateArnHasBeenSet = true; m_ownershipVerificationCertificateArn = value; } inline void SetOwnershipVerificationCertificateArn(Aws::String&& value) { m_ownershipVerificationCertificateArnHasBeenSet = true; m_ownershipVerificationCertificateArn = std::move(value); } inline void SetOwnershipVerificationCertificateArn(const char* value) { m_ownershipVerificationCertificateArnHasBeenSet = true; m_ownershipVerificationCertificateArn.assign(value); } inline DomainName& WithOwnershipVerificationCertificateArn(const Aws::String& value) { SetOwnershipVerificationCertificateArn(value); return *this;} inline DomainName& WithOwnershipVerificationCertificateArn(Aws::String&& value) { SetOwnershipVerificationCertificateArn(std::move(value)); return *this;} inline DomainName& WithOwnershipVerificationCertificateArn(const char* value) { SetOwnershipVerificationCertificateArn(value); return *this;} ///@} ///@{ inline const Aws::String& GetRequestId() const{ return m_requestId; } inline bool RequestIdHasBeenSet() const { return m_requestIdHasBeenSet; } inline void SetRequestId(const Aws::String& value) { m_requestIdHasBeenSet = true; m_requestId = value; } inline void SetRequestId(Aws::String&& value) { m_requestIdHasBeenSet = true; m_requestId = std::move(value); } inline void SetRequestId(const char* value) { m_requestIdHasBeenSet = true; m_requestId.assign(value); } inline DomainName& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} inline DomainName& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} inline DomainName& WithRequestId(const char* value) { SetRequestId(value); return *this;} ///@} private: Aws::String m_domainName; bool m_domainNameHasBeenSet = false; Aws::String m_certificateName; bool m_certificateNameHasBeenSet = false; Aws::String m_certificateArn; bool m_certificateArnHasBeenSet = false; Aws::Utils::DateTime m_certificateUploadDate; bool m_certificateUploadDateHasBeenSet = false; Aws::String m_regionalDomainName; bool m_regionalDomainNameHasBeenSet = false; Aws::String m_regionalHostedZoneId; bool m_regionalHostedZoneIdHasBeenSet = false; Aws::String m_regionalCertificateName; bool m_regionalCertificateNameHasBeenSet = false; Aws::String m_regionalCertificateArn; bool m_regionalCertificateArnHasBeenSet = false; Aws::String m_distributionDomainName; bool m_distributionDomainNameHasBeenSet = false; Aws::String m_distributionHostedZoneId; bool m_distributionHostedZoneIdHasBeenSet = false; EndpointConfiguration m_endpointConfiguration; bool m_endpointConfigurationHasBeenSet = false; DomainNameStatus m_domainNameStatus; bool m_domainNameStatusHasBeenSet = false; Aws::String m_domainNameStatusMessage; bool m_domainNameStatusMessageHasBeenSet = false; SecurityPolicy m_securityPolicy; bool m_securityPolicyHasBeenSet = false; Aws::Map m_tags; bool m_tagsHasBeenSet = false; MutualTlsAuthentication m_mutualTlsAuthentication; bool m_mutualTlsAuthenticationHasBeenSet = false; Aws::String m_ownershipVerificationCertificateArn; bool m_ownershipVerificationCertificateArnHasBeenSet = false; Aws::String m_requestId; bool m_requestIdHasBeenSet = false; }; } // namespace Model } // namespace APIGateway } // namespace Aws