All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.awsnative.apigateway.kotlin.DomainNameArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.apigateway.kotlin

import com.pulumi.awsnative.apigateway.DomainNameArgs.builder
import com.pulumi.awsnative.apigateway.kotlin.inputs.DomainNameEndpointConfigurationArgs
import com.pulumi.awsnative.apigateway.kotlin.inputs.DomainNameEndpointConfigurationArgsBuilder
import com.pulumi.awsnative.apigateway.kotlin.inputs.DomainNameMutualTlsAuthenticationArgs
import com.pulumi.awsnative.apigateway.kotlin.inputs.DomainNameMutualTlsAuthenticationArgsBuilder
import com.pulumi.awsnative.kotlin.inputs.TagArgs
import com.pulumi.awsnative.kotlin.inputs.TagArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Resource Type definition for AWS::ApiGateway::DomainName.
 * ## Example Usage
 * ### Example
 * No Java example available.
 * ### Example
 * No Java example available.
 * @property certificateArn The reference to an AWS -managed certificate that will be used by edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.
 * @property domainName The custom domain name as an API host name, for example, `my-api.example.com` .
 * @property endpointConfiguration The endpoint configuration of this DomainName showing the endpoint types of the domain name.
 * @property mutualTlsAuthentication 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.
 * @property ownershipVerificationCertificateArn 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.
 * @property regionalCertificateArn The reference to an AWS -managed certificate that will be used for validating the regional domain name. AWS Certificate Manager is the only supported source.
 * @property securityPolicy The Transport Layer Security (TLS) version + cipher suite for this DomainName. The valid values are `TLS_1_0` and `TLS_1_2` .
 * @property tags The collection of tags. Each tag element is associated with a given resource.
 */
public data class DomainNameArgs(
    public val certificateArn: Output? = null,
    public val domainName: Output? = null,
    public val endpointConfiguration: Output? = null,
    public val mutualTlsAuthentication: Output? = null,
    public val ownershipVerificationCertificateArn: Output? = null,
    public val regionalCertificateArn: Output? = null,
    public val securityPolicy: Output? = null,
    public val tags: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.apigateway.DomainNameArgs =
        com.pulumi.awsnative.apigateway.DomainNameArgs.builder()
            .certificateArn(certificateArn?.applyValue({ args0 -> args0 }))
            .domainName(domainName?.applyValue({ args0 -> args0 }))
            .endpointConfiguration(
                endpointConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .mutualTlsAuthentication(
                mutualTlsAuthentication?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .ownershipVerificationCertificateArn(
                ownershipVerificationCertificateArn?.applyValue({ args0 ->
                    args0
                }),
            )
            .regionalCertificateArn(regionalCertificateArn?.applyValue({ args0 -> args0 }))
            .securityPolicy(securityPolicy?.applyValue({ args0 -> args0 }))
            .tags(
                tags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            ).build()
}

/**
 * Builder for [DomainNameArgs].
 */
@PulumiTagMarker
public class DomainNameArgsBuilder internal constructor() {
    private var certificateArn: Output? = null

    private var domainName: Output? = null

    private var endpointConfiguration: Output? = null

    private var mutualTlsAuthentication: Output? = null

    private var ownershipVerificationCertificateArn: Output? = null

    private var regionalCertificateArn: Output? = null

    private var securityPolicy: Output? = null

    private var tags: Output>? = null

    /**
     * @param value The reference to an AWS -managed certificate that will be used by edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.
     */
    @JvmName("tilkttjfoslisueh")
    public suspend fun certificateArn(`value`: Output) {
        this.certificateArn = value
    }

    /**
     * @param value The custom domain name as an API host name, for example, `my-api.example.com` .
     */
    @JvmName("nqaswegbfhhfylvm")
    public suspend fun domainName(`value`: Output) {
        this.domainName = value
    }

    /**
     * @param value The endpoint configuration of this DomainName showing the endpoint types of the domain name.
     */
    @JvmName("txclaypntjsqevkm")
    public suspend fun endpointConfiguration(`value`: Output) {
        this.endpointConfiguration = value
    }

    /**
     * @param value 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.
     */
    @JvmName("qugjxhgqjganmmpi")
    public suspend fun mutualTlsAuthentication(`value`: Output) {
        this.mutualTlsAuthentication = value
    }

    /**
     * @param value 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.
     */
    @JvmName("hyjiqoamvaqxcluh")
    public suspend fun ownershipVerificationCertificateArn(`value`: Output) {
        this.ownershipVerificationCertificateArn = value
    }

    /**
     * @param value The reference to an AWS -managed certificate that will be used for validating the regional domain name. AWS Certificate Manager is the only supported source.
     */
    @JvmName("nkvliwyauawvocvf")
    public suspend fun regionalCertificateArn(`value`: Output) {
        this.regionalCertificateArn = value
    }

    /**
     * @param value The Transport Layer Security (TLS) version + cipher suite for this DomainName. The valid values are `TLS_1_0` and `TLS_1_2` .
     */
    @JvmName("frpwygtvmylutuyb")
    public suspend fun securityPolicy(`value`: Output) {
        this.securityPolicy = value
    }

    /**
     * @param value The collection of tags. Each tag element is associated with a given resource.
     */
    @JvmName("wismciiclehjivwu")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    @JvmName("cjxpuktwoogwbeao")
    public suspend fun tags(vararg values: Output) {
        this.tags = Output.all(values.asList())
    }

    /**
     * @param values The collection of tags. Each tag element is associated with a given resource.
     */
    @JvmName("xslyouyyxuojnjfm")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value The reference to an AWS -managed certificate that will be used by edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.
     */
    @JvmName("tbtgnhpjynmcxjxt")
    public suspend fun certificateArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.certificateArn = mapped
    }

    /**
     * @param value The custom domain name as an API host name, for example, `my-api.example.com` .
     */
    @JvmName("hpwsokwwwwiialec")
    public suspend fun domainName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.domainName = mapped
    }

    /**
     * @param value The endpoint configuration of this DomainName showing the endpoint types of the domain name.
     */
    @JvmName("qqsdclhnpeuprjfr")
    public suspend fun endpointConfiguration(`value`: DomainNameEndpointConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.endpointConfiguration = mapped
    }

    /**
     * @param argument The endpoint configuration of this DomainName showing the endpoint types of the domain name.
     */
    @JvmName("xmdqsqpmdlxbjtaj")
    public suspend fun endpointConfiguration(argument: suspend DomainNameEndpointConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DomainNameEndpointConfigurationArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.endpointConfiguration = mapped
    }

    /**
     * @param value 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.
     */
    @JvmName("djdbxsfxnlwdigiu")
    public suspend fun mutualTlsAuthentication(`value`: DomainNameMutualTlsAuthenticationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.mutualTlsAuthentication = mapped
    }

    /**
     * @param argument 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.
     */
    @JvmName("sesutdqqvrhavvmw")
    public suspend fun mutualTlsAuthentication(argument: suspend DomainNameMutualTlsAuthenticationArgsBuilder.() -> Unit) {
        val toBeMapped = DomainNameMutualTlsAuthenticationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.mutualTlsAuthentication = mapped
    }

    /**
     * @param value 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.
     */
    @JvmName("nsnhjbguihlyucfw")
    public suspend fun ownershipVerificationCertificateArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ownershipVerificationCertificateArn = mapped
    }

    /**
     * @param value The reference to an AWS -managed certificate that will be used for validating the regional domain name. AWS Certificate Manager is the only supported source.
     */
    @JvmName("mmcmkudphfvincxb")
    public suspend fun regionalCertificateArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.regionalCertificateArn = mapped
    }

    /**
     * @param value The Transport Layer Security (TLS) version + cipher suite for this DomainName. The valid values are `TLS_1_0` and `TLS_1_2` .
     */
    @JvmName("giptdxmgtbtdrkwd")
    public suspend fun securityPolicy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.securityPolicy = mapped
    }

    /**
     * @param value The collection of tags. Each tag element is associated with a given resource.
     */
    @JvmName("fibieacudvcppdbo")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument The collection of tags. Each tag element is associated with a given resource.
     */
    @JvmName("lgtvwejqptpneyik")
    public suspend fun tags(argument: List Unit>) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument The collection of tags. Each tag element is associated with a given resource.
     */
    @JvmName("amaiokisqpqexdib")
    public suspend fun tags(vararg argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument The collection of tags. Each tag element is associated with a given resource.
     */
    @JvmName("qfogdpbfqoxlmsbd")
    public suspend fun tags(argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(TagArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param values The collection of tags. Each tag element is associated with a given resource.
     */
    @JvmName("ghnqemvmsidcvwsa")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    internal fun build(): DomainNameArgs = DomainNameArgs(
        certificateArn = certificateArn,
        domainName = domainName,
        endpointConfiguration = endpointConfiguration,
        mutualTlsAuthentication = mutualTlsAuthentication,
        ownershipVerificationCertificateArn = ownershipVerificationCertificateArn,
        regionalCertificateArn = regionalCertificateArn,
        securityPolicy = securityPolicy,
        tags = tags,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy